Skip to content

Commit 5b847b9

Browse files
committed
CLJS-1179: strange load-file behavior
cljs.repl/load-namespace: - sym can actually be a string as well, rename to ns cljs.repl/load-file: - need to load dependencies before loading the compiled file
1 parent 380c8b1 commit 5b847b9

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

src/clj/cljs/repl.clj

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -167,23 +167,23 @@
167167
"Load a namespace and all of its dependencies into the evaluation environment.
168168
The environment is responsible for ensuring that each namespace is loaded once and
169169
only once."
170-
([repl-env sym] (load-namespace repl-env sym nil))
171-
([repl-env sym opts]
172-
(let [sym (if (and (seq? sym)
173-
(= (first sym) 'quote))
174-
(second sym)
175-
sym)
170+
([repl-env ns] (load-namespace repl-env ns nil))
171+
([repl-env ns opts]
172+
(let [ns (if (and (seq? ns)
173+
(= (first ns) 'quote))
174+
(second ns)
175+
ns)
176176
;; TODO: add pre-condition to source-on-disk, the
177177
;; source must supply at least :url - David
178-
sources (cljsc/add-dependencies
179-
(merge (env->opts repl-env) opts)
180-
{:requires [(name sym)] :type :seed
181-
:url (:uri (cljsc/source-for-namespace
182-
sym env/*compiler*))})
183-
deps (->> sources
184-
(remove (comp #{["goog"]} :provides))
185-
(remove (comp #{:seed} :type))
186-
(map #(select-keys % [:provides :url])))]
178+
sources (cljsc/add-dependencies
179+
(merge (env->opts repl-env) opts)
180+
{:requires [(name ns)] :type :seed
181+
:url (:uri (cljsc/source-for-namespace
182+
ns env/*compiler*))})
183+
deps (->> sources
184+
(remove (comp #{["goog"]} :provides))
185+
(remove (comp #{:seed} :type))
186+
(map #(select-keys % [:provides :url])))]
187187
(if (:output-dir opts)
188188
;; REPLs that read from :output-dir just need to add deps,
189189
;; environment will handle actual loading - David
@@ -478,8 +478,6 @@
478478
(let [env (assoc env :ns (ana/get-namespace ana/*cljs-ns*))]
479479
(evaluate-form repl-env env filename form))))))
480480

481-
;; TODO: this should probably compile dependencies - David
482-
483481
(defn load-file
484482
([repl-env f] (load-file repl-env f *repl-opts*))
485483
([repl-env f opts]
@@ -492,6 +490,8 @@
492490
(assoc opts
493491
:output-file
494492
(cljsc/src-file->target-file src)))]
493+
;; need to load dependencies first
494+
(load-dependencies repl-env (:requires compiled) opts)
495495
;; make sure it's been analyzed, this is because if it's already compiled
496496
;; cljs.compiler/compile-file won't do anything, good for builds,
497497
;; but a bit annoying here

0 commit comments

Comments
 (0)