Skip to content

Commit d516268

Browse files
committed
CLJS-1363: cljs.js: eval-str: Allow client to eval in ns other than cljs.user
top level entry points of cljs.js now all take :ns in opts argument
1 parent 8b6adae commit d516268

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

src/main/cljs/cljs/js.cljs

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,10 @@
229229
(-> (:*cljs-dep-set* bound-vars) meta :dep-path)))
230230
(if (seq deps)
231231
(let [dep (first deps)]
232-
(require bound-vars dep (dissoc opts :context)
232+
(require bound-vars dep
233+
(-> opts
234+
(dissoc :context)
235+
(dissoc :ns))
233236
(fn [res]
234237
(if-not (:error res)
235238
(load-deps bound-vars ana-env lib (next deps) opts cb)
@@ -286,7 +289,8 @@
286289
(require bound-vars nsym k
287290
(-> opts
288291
(assoc :macros-ns true)
289-
(dissoc :context))
292+
(dissoc :context)
293+
(dissoc :ns))
290294
(fn [res]
291295
(if-not (:error res)
292296
(load-macros bound-vars k (next macros) reload reloads opts cb)
@@ -359,14 +363,13 @@
359363
(let [rdr (rt/indexing-push-back-reader source 1 name)
360364
eof (js-obj)
361365
aenv (ana/empty-env)
362-
bound-vars (cond-> (merge bound-vars
363-
{:*cljs-ns* 'cljs.user
364-
:*ns* (create-ns ana/*cljs-ns*)})
366+
the-ns (or (:ns opts) 'cljs.user)
367+
bound-vars (cond-> (merge bound-vars {:*cljs-ns* the-ns})
365368
(:source-map opts) (assoc :*sm-data* (sm-data)))]
366369
((fn analyze-loop []
367370
(binding [env/*compiler* (:*compiler* bound-vars)
368371
ana/*cljs-ns* (:*cljs-ns* bound-vars)
369-
*ns* (:*ns* bound-vars)
372+
*ns* (create-ns (:*cljs-ns* bound-vars))
370373
r/*data-readers* (:*data-readers* bound-vars)
371374
comp/*source-map-data* (:*sm-data* bound-vars)]
372375
(let [res (try
@@ -442,14 +445,13 @@
442445
;; Eval
443446

444447
(defn eval* [bound-vars form opts cb]
445-
(let [bound-vars (cond-> (merge bound-vars
446-
{:*cljs-ns* 'cljs.user
447-
:*ns* (create-ns ana/*cljs-ns*)})
448+
(let [the-ns (or (:ns opts) 'cljs.user)
449+
bound-vars (cond-> (merge bound-vars {:*cljs-ns* the-ns})
448450
(:source-map opts) (assoc :*sm-data* (sm-data)))]
449451
(binding [env/*compiler* (:*compiler* bound-vars)
450452
*eval-fn* (:*eval-fn* bound-vars)
451453
ana/*cljs-ns* (:*cljs-ns* bound-vars)
452-
*ns* (:*ns* bound-vars)
454+
*ns* (create-ns (:*cljs-ns* bound-vars))
453455
r/*data-readers* (:*data-readers* bound-vars)
454456
comp/*source-map-data* (:*sm-data* bound-vars)]
455457
(let [aenv (ana/empty-env)
@@ -500,8 +502,6 @@
500502
([state form opts cb]
501503
(eval*
502504
{:*compiler* state
503-
:*cljs-ns* 'cljs.user
504-
:*ns* (create-ns 'cljs.user)
505505
:*data-readers* tags/*cljs-data-readers*
506506
:*analyze-deps* (or (:analyze-deps opts) true)
507507
:*load-macros* (or (:load-macros opts) true)
@@ -517,15 +517,14 @@
517517
eof (js-obj)
518518
aenv (ana/empty-env)
519519
sb (StringBuffer.)
520-
bound-vars (cond-> (merge bound-vars
521-
{:*cljs-ns* 'cljs.user
522-
:*ns* (create-ns ana/*cljs-ns*)})
520+
the-ns (or (:ns opts) 'cljs.user)
521+
bound-vars (cond-> (merge bound-vars {:*cljs-ns* the-ns})
523522
(:source-map opts) (assoc :*sm-data* (sm-data)))]
524523
((fn compile-loop []
525524
(binding [env/*compiler* (:*compiler* bound-vars)
526525
*eval-fn* (:*eval-fn* bound-vars)
527526
ana/*cljs-ns* (:*cljs-ns* bound-vars)
528-
*ns* (:*ns* bound-vars)
527+
*ns* (create-ns (:*cljs-ns* bound-vars))
529528
r/*data-readers* (:*data-readers* bound-vars)
530529
comp/*source-map-data* (:*sm-data* bound-vars)]
531530
(let [res (try
@@ -609,9 +608,8 @@
609608
eof (js-obj)
610609
aenv (ana/empty-env)
611610
sb (StringBuffer.)
612-
bound-vars (cond-> (merge bound-vars
613-
{:*cljs-ns* 'cljs.user
614-
:*ns* (create-ns ana/*cljs-ns*)})
611+
the-ns (or (:ns opts) 'cljs.user)
612+
bound-vars (cond-> (merge bound-vars {:*cljs-ns* the-ns})
615613
(:source-map opts) (assoc :*sm-data* (sm-data)))]
616614
(when (:verbose opts) (debug-prn "Evaluating" name))
617615
((fn compile-loop [ns]

0 commit comments

Comments
 (0)