Skip to content

Commit 53780c6

Browse files
committed
CLJS-1202: cljs.repl/load-file is not additive
cljs.compiler: - compile-file, if :force option supplied, always compile. if the :mode is :interactive, do not remove the namespace. cljs.repl: - remove ns removing. remove analysis. rely on cljs.compiler/compile-file to handle properly via :force and :mode options.
1 parent ab1e922 commit 53780c6

File tree

2 files changed

+10
-13
lines changed

2 files changed

+10
-13
lines changed

src/clj/cljs/compiler.clj

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,11 +1114,13 @@
11141114
(not (false? (:static-fns opts))))
11151115
(assoc opts :static-fns true)
11161116
opts)]
1117-
(if (requires-compilation? src-file dest-file opts)
1117+
(if (or (requires-compilation? src-file dest-file opts)
1118+
(:force opts))
11181119
(do
11191120
(util/mkdirs dest-file)
11201121
(when (and (get-in nses [ns :defs])
1121-
(not= ns 'cljs.core))
1122+
(not= 'cljs.core ns)
1123+
(not= :interactive (:mode opts)))
11221124
(swap! env/*compiler* update-in [::ana/namespaces] dissoc ns))
11231125
(let [ret (compile-file* src-file dest-file opts)]
11241126
(when *dependents*

src/clj/cljs/repl.clj

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -492,10 +492,12 @@
492492
(util/url? f) f
493493
(.exists (io/file f)) (io/file f)
494494
:else (io/resource f))
495-
compiled (cljsc/compile src
496-
(assoc opts
497-
:output-file
498-
(cljsc/src-file->target-file src)))]
495+
compiled (binding [ana/*reload-macros* true]
496+
(cljsc/compile src
497+
(assoc opts
498+
:output-file (cljsc/src-file->target-file src)
499+
:force true
500+
:mode :interactive)))]
499501
;; copy over the original source file if source maps enabled
500502
(when-let [ns (and (:source-map opts) (first (:provides compiled)))]
501503
(spit
@@ -504,13 +506,6 @@
504506
(slurp src)))
505507
;; need to load dependencies first
506508
(load-dependencies repl-env (:requires compiled) opts)
507-
;; remove the ns to get :reload semantics
508-
(ana-api/remove-ns (:ns (ana/parse-ns src)))
509-
;; make sure it's been analyzed, this is because if it's already compiled
510-
;; cljs.compiler/compile-file won't do anything, good for builds,
511-
;; but a bit annoying here
512-
(binding [ana/*reload-macros* true]
513-
(ana/analyze-file src opts))
514509
(-evaluate repl-env f 1 (cljsc/add-dep-string opts compiled))
515510
(-evaluate repl-env f 1
516511
(cljsc/src-file->goog-require src {:wrap true :reload true})))

0 commit comments

Comments
 (0)