Skip to content

Commit 7f7b647

Browse files
mfikesdnolen
authored andcommitted
CLJS-1585: Self-host: Alias-scoped keywords
Since cljs.tools.reader makes use of *alias-map* to resolve aliases, bind it to the :requires map for the current namespace in the compiler state. This allows alias-scoped keywords (such as ::alias-name/foo to be properly expanded.
1 parent 22a2692 commit 7f7b647

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/main/cljs/cljs/js.cljs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,10 @@
157157
"\n//# sourceMappingURL=data:application/json;base64,"
158158
(base64/encodeString json)))))
159159

160+
(defn- current-alias-map
161+
[]
162+
(get-in @env/*compiler* [:cljs.analyzer/namespaces ana/*cljs-ns* :requires]))
163+
160164
;; -----------------------------------------------------------------------------
161165
;; Analyze
162166

@@ -449,6 +453,7 @@
449453
ana/*cljs-static-fns* (:static-fns opts)
450454
*ns* (create-ns ns)
451455
ana/*passes* (:*passes* bound-vars)
456+
r/*alias-map* (current-alias-map)
452457
r/*data-readers* (:*data-readers* bound-vars)
453458
r/resolve-symbol resolve-symbol
454459
comp/*source-map-data* (:*sm-data* bound-vars)]
@@ -536,6 +541,7 @@
536541
ana/*cljs-ns* (:*cljs-ns* bound-vars)
537542
ana/*cljs-static-fns* (:static-fns opts)
538543
*ns* (create-ns (:*cljs-ns* bound-vars))
544+
r/*alias-map* (current-alias-map)
539545
r/*data-readers* (:*data-readers* bound-vars)
540546
r/resolve-symbol resolve-symbol
541547
comp/*source-map-data* (:*sm-data* bound-vars)]
@@ -611,6 +617,7 @@
611617
ana/*cljs-ns* ns
612618
ana/*cljs-static-fns* (:static-fns opts)
613619
*ns* (create-ns ns)
620+
r/*alias-map* (current-alias-map)
614621
r/*data-readers* (:*data-readers* bound-vars)
615622
r/resolve-symbol resolve-symbol
616623
comp/*source-map-data* (:*sm-data* bound-vars)]
@@ -709,6 +716,7 @@
709716
ana/*cljs-ns* ns
710717
ana/*cljs-static-fns* (:static-fns opts)
711718
*ns* (create-ns ns)
719+
r/*alias-map* (current-alias-map)
712720
r/*data-readers* (:*data-readers* bound-vars)
713721
r/resolve-symbol resolve-symbol
714722
comp/*source-map-data* (:*sm-data* bound-vars)]

src/test/self/self_host/test.cljs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,27 @@
545545
(is (nil? error))
546546
(is (= 2 value)))))
547547

548+
(deftest test-CLJS-1585
549+
(cljs/eval-str st
550+
"(ns alias-load.core (:require [aliased.core :as alias]))"
551+
nil
552+
{:ns 'cljs.user
553+
:context :expr
554+
:eval cljs.js/js-eval
555+
:load (fn [_ cb]
556+
(cb {:lang :clj :source "(ns aliased.core)"}))}
557+
(fn [{:keys [error value]}]
558+
(is (nil? error))
559+
(cljs.js/eval-str st
560+
"::alias/bar"
561+
nil
562+
{:ns 'alias-load.core
563+
:context :expr
564+
:eval cljs.js/js-eval}
565+
(fn [{:keys [error value]}]
566+
(is (nil? error))
567+
(is (= :aliased.core/bar value)))))))
568+
548569
#_(deftest test-eval-str-with-require
549570
(async done
550571
(let [l (latch 3 done)]

0 commit comments

Comments
 (0)