Skip to content

Commit acaefa1

Browse files
authored
Fix up missing "sources" in advanced compiled source map (#251)
1 parent c3c3773 commit acaefa1

File tree

3 files changed

+47
-16
lines changed

3 files changed

+47
-16
lines changed

src/main/clojure/cljs/closure.clj

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,11 +1394,12 @@
13941394
(let [source (first sources)]
13951395
(recur
13961396
(next sources)
1397-
(let [{:keys [provides source-url]} source]
1398-
(if (and provides source-url)
1397+
(let [{:keys [provides]} source
1398+
url (or (:source-url source) (:url source))]
1399+
(if (and provides url)
13991400
(assoc relpaths
1400-
(.getPath ^URL source-url)
1401-
(util/ns->relpath (first provides) (util/ext source-url)))
1401+
(.getPath ^URL url)
1402+
(util/ns->relpath (first provides) (util/ext url)))
14021403
relpaths))
14031404
(if-let [url (:url source)]
14041405
(let [path (.getPath ^URL url)]
@@ -1415,19 +1416,19 @@
14151416
(spit
14161417
(io/file name)
14171418
(sm/encode merged
1418-
{:preamble-line-count (+ (:preamble-line-count opts 0)
1419-
(:foreign-deps-line-count opts 0))
1420-
:lines (+ (:lineCount sm-json)
1421-
(:preamble-line-count opts 0)
1422-
(:foreign-deps-line-count opts 0)
1423-
2)
1424-
:file name
1425-
:output-dir (util/output-directory opts)
1426-
:source-map (:source-map opts)
1427-
:source-map-path (:source-map-path opts)
1428-
:source-map-timestamp (:source-map-timestamp opts)
1419+
{:preamble-line-count (+ (:preamble-line-count opts 0)
1420+
(:foreign-deps-line-count opts 0))
1421+
:lines (+ (:lineCount sm-json)
1422+
(:preamble-line-count opts 0)
1423+
(:foreign-deps-line-count opts 0)
1424+
2)
1425+
:file name
1426+
:output-dir (util/output-directory opts)
1427+
:source-map (:source-map opts)
1428+
:source-map-path (:source-map-path opts)
1429+
:source-map-timestamp (:source-map-timestamp opts)
14291430
:source-map-pretty-print (:source-map-pretty-print opts)
1430-
:relpaths relpaths}))))))
1431+
:relpaths relpaths}))))))
14311432

14321433
(defn write-variable-maps [^Result result opts]
14331434
(let [var-out (:closure-variable-map-out opts)]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
(ns adv-src-map.core)
2+
3+
(.log js/console "Hello!" (first [1 2 3]))

src/test/clojure/cljs/build_api_tests.clj

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -958,3 +958,30 @@
958958
(testing "only two 1-arity str calls, compile time constants are optimized"
959959
(is (= 2 (count (re-seq #"\$1\(.*?\)" source))))))
960960
(test/delete-out-files out))))
961+
962+
#_(deftest test-advanced-source-maps
963+
(testing "Test that the `sources` of the final merged source map matches the
964+
one in the original Closure Compiler generated advanced source map"
965+
(let [out (.getPath (io/file (test/tmp-dir) "adv-src-map"))]
966+
(test/delete-out-files out)
967+
(test/delete-node-modules)
968+
(let [{:keys [inputs opts]} {:inputs (str (io/file "src" "test" "cljs_build"))
969+
:opts {:main 'cljs-3346-as-alias.core
970+
:output-to (.getPath (io/file out "main.js"))
971+
:source-map (.getPath (io/file out "main.js.map"))
972+
:output-dir out
973+
:optimizations :advanced
974+
:closure-source-map true}}
975+
cenv (env/default-compiler-env)]
976+
(build/build (build/inputs (io/file inputs "adv_src_map/core.cljs")) opts cenv))
977+
(let [cljs-src-map (->> (io/file out "main.js.map") slurp json/read-str)
978+
closure-src-map (->> (io/file out "main.js.map.closure") slurp json/read-str)]
979+
(println (get closure-src-map "sources"))
980+
(println (get cljs-src-map "sources")))
981+
(test/delete-out-files out))))
982+
983+
#_(comment
984+
985+
(clojure.test/test-vars [#'test-advanced-source-maps])
986+
987+
)

0 commit comments

Comments
 (0)