Skip to content

Commit 1312604

Browse files
committed
Fix REPL issues when processed JS modules which are transitive deps of
a require failed to load. it seems it's possible for a source to have stale :provides & :requires. This doesn't seem to have been observed in builds because Closure uses the information in the compiled sources, and under :none we compute dep.js in one pass. This fixes the immediate REPL issue with processed JS modules by simply using the compiled source to determine :provides / :requires
1 parent ecdbdcc commit 1312604

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/main/clojure/cljs/repl.cljc

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,17 @@
206206
(map #(cljsc/source-on-disk opts %)))]
207207
(when (:repl-verbose opts)
208208
(println "Loading:" (:provides source)))
209-
(.append sb (cljsc/add-dep-string opts source)))
209+
;; Need to get :requires and :provides from compiled source
210+
;; not from our own compilation, this issue oddly doesn't seem to
211+
;; affect compiled ClojureScript, should be cleaned up so we
212+
;; don't need this step here - David
213+
(with-open [rdr (io/reader (:url source))]
214+
(.append sb
215+
(cljsc/add-dep-string opts
216+
(merge source
217+
(deps/parse-js-ns (line-seq rdr)))))))
218+
(when (:repl-verbose opts)
219+
(println (.toString sb)))
210220
(-evaluate repl-env "<cljs repl>" 1 (.toString sb)))
211221
;; REPLs that stream must manually load each dep - David
212222
(doseq [{:keys [url provides]} deps]

0 commit comments

Comments
 (0)