Skip to content

Commit 8a49ce6

Browse files
anmonteiroswannodette
authored andcommitted
CLJS-1737: Self-host: clojure alias implicit macro use regression
When checking for clojure.* -> cljs.* cases in `get-expander-ns`, we want NS resolution to return nil if it can't resolve either the macros NS or the NS alias. `resolve-macro-ns-alias` and `resolve-ns-alias` need to be tweaked to return nil in this case.
1 parent 4218670 commit 8a49ce6

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

src/main/clojure/cljs/analyzer.cljc

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -690,13 +690,19 @@
690690
(fn [env prefix suffix]
691691
(throw (error env (str "Unable to resolve var: " suffix " in this context")))))))
692692

693-
(defn resolve-ns-alias [env name]
694-
(let [sym (symbol name)]
695-
(get (:requires (:ns env)) sym sym)))
696-
697-
(defn resolve-macro-ns-alias [env name]
698-
(let [sym (symbol name)]
699-
(get (:require-macros (:ns env)) sym sym)))
693+
(defn resolve-ns-alias
694+
([env name]
695+
(resolve-ns-alias env name (symbol name)))
696+
([env name default]
697+
(let [sym (symbol name)]
698+
(get (:requires (:ns env)) sym default))))
699+
700+
(defn resolve-macro-ns-alias
701+
([env name]
702+
(resolve-macro-ns-alias env name (symbol name)))
703+
([env name default]
704+
(let [sym (symbol name)]
705+
(get (:require-macros (:ns env)) sym default))))
700706

701707
(defn confirm-ns
702708
"Given env, an analysis environment, and ns-sym, a symbol identifying a
@@ -2574,8 +2580,8 @@
25742580

25752581
(defn get-expander-ns [env ^String nstr]
25762582
;; first check for clojure.* -> cljs.* cases
2577-
(let [res (or (resolve-macro-ns-alias env (symbol nstr))
2578-
(resolve-ns-alias env (symbol nstr)))
2583+
(let [res (or (resolve-macro-ns-alias env nstr nil)
2584+
(resolve-ns-alias env nstr nil))
25792585
nstr (if res (str res) nstr)]
25802586
(cond
25812587
#?@(:clj [(= "clojure.core" nstr) (find-ns 'cljs.core)]

src/test/cljs/cljs/clojure_alias_test.cljs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,7 @@
99
(deftest aliases-test
1010
(is? (= spec? clojure.spec/spec? cljs.spec/spec?))
1111
(is? (foo number?)))
12+
13+
(deftest use-macros
14+
(s/def ::even? (s/and number? even?))
15+
(is? (s/valid? ::even? 2)))

0 commit comments

Comments
 (0)