diff --git a/src/main/clojure/cljs/closure.clj b/src/main/clojure/cljs/closure.clj index b215573f6..a8d4a4757 100644 --- a/src/main/clojure/cljs/closure.clj +++ b/src/main/clojure/cljs/closure.clj @@ -1389,11 +1389,12 @@ (let [source (first sources)] (recur (next sources) - (let [{:keys [provides source-url]} source] - (if (and provides source-url) + (let [{:keys [provides]} source + url (or (:source-url source) (:url source))] + (if (and provides url) (assoc relpaths - (.getPath ^URL source-url) - (util/ns->relpath (first provides) (util/ext source-url))) + (.getPath ^URL url) + (util/ns->relpath (first provides) (util/ext url))) relpaths)) (if-let [url (:url source)] (let [path (.getPath ^URL url)] @@ -1410,19 +1411,19 @@ (spit (io/file name) (sm/encode merged - {:preamble-line-count (+ (:preamble-line-count opts 0) - (:foreign-deps-line-count opts 0)) - :lines (+ (:lineCount sm-json) - (:preamble-line-count opts 0) - (:foreign-deps-line-count opts 0) - 2) - :file name - :output-dir (util/output-directory opts) - :source-map (:source-map opts) - :source-map-path (:source-map-path opts) - :source-map-timestamp (:source-map-timestamp opts) + {:preamble-line-count (+ (:preamble-line-count opts 0) + (:foreign-deps-line-count opts 0)) + :lines (+ (:lineCount sm-json) + (:preamble-line-count opts 0) + (:foreign-deps-line-count opts 0) + 2) + :file name + :output-dir (util/output-directory opts) + :source-map (:source-map opts) + :source-map-path (:source-map-path opts) + :source-map-timestamp (:source-map-timestamp opts) :source-map-pretty-print (:source-map-pretty-print opts) - :relpaths relpaths})))))) + :relpaths relpaths})))))) (defn write-variable-maps [^Result result opts] (let [var-out (:closure-variable-map-out opts)] diff --git a/src/test/cljs_build/adv_src_map/core.cljs b/src/test/cljs_build/adv_src_map/core.cljs new file mode 100644 index 000000000..22cc32cab --- /dev/null +++ b/src/test/cljs_build/adv_src_map/core.cljs @@ -0,0 +1,3 @@ +(ns adv-src-map.core) + +(.log js/console "Hello!" (first [1 2 3])) \ No newline at end of file diff --git a/src/test/clojure/cljs/build_api_tests.clj b/src/test/clojure/cljs/build_api_tests.clj index e788c1ace..0edb2876a 100644 --- a/src/test/clojure/cljs/build_api_tests.clj +++ b/src/test/clojure/cljs/build_api_tests.clj @@ -840,3 +840,30 @@ (.delete (io/file "package.json")) (test/delete-node-modules) (test/delete-out-files out)))) + +#_(deftest test-advanced-source-maps + (testing "Test that the `sources` of the final merged source map matches the + one in the original Closure Compiler generated advanced source map" + (let [out (.getPath (io/file (test/tmp-dir) "adv-src-map"))] + (test/delete-out-files out) + (test/delete-node-modules) + (let [{:keys [inputs opts]} {:inputs (str (io/file "src" "test" "cljs_build")) + :opts {:main 'cljs-3346-as-alias.core + :output-to (.getPath (io/file out "main.js")) + :source-map (.getPath (io/file out "main.js.map")) + :output-dir out + :optimizations :advanced + :closure-source-map true}} + cenv (env/default-compiler-env)] + (build/build (build/inputs (io/file inputs "adv_src_map/core.cljs")) opts cenv)) + (let [cljs-src-map (->> (io/file out "main.js.map") slurp json/read-str) + closure-src-map (->> (io/file out "main.js.map.closure") slurp json/read-str)] + (println (get closure-src-map "sources")) + (println (get cljs-src-map "sources"))) + (test/delete-out-files out)))) + +#_(comment + + (clojure.test/test-vars [#'test-advanced-source-maps]) + + ) \ No newline at end of file