Skip to content

Commit 3e50ebe

Browse files
committed
:rename symbols must first occur in :only, fix check & tests
1 parent 7caab4a commit 3e50ebe

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

src/main/clojure/cljs/analyzer.cljc

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3063,14 +3063,17 @@
30633063

30643064
(== cnt 1)
30653065
(let [[_ & {:keys [only rename] :as parsed-spec}] (first xs)
3066-
err-str "Only (:refer-global :only [names]) and optionally `:rename {from to}` specs supported"]
3066+
only-set (set only)
3067+
err-str "Only (:refer-global :only [names]) and optionally `:rename {from to}` specs supported.
3068+
:rename symbols must be present in :only"]
30673069
(when-not (or (empty? only)
30683070
(and (vector? only)
30693071
(every? symbol only)))
30703072
(throw (error env err-str)))
30713073
(when-not (or (empty? rename)
30723074
(and (map? rename)
3073-
(every? symbol (mapcat identity rename))))
3075+
(every? symbol (mapcat identity rename))
3076+
(every? only-set (keys rename))))
30743077
(throw (error env (str err-str (pr-str parsed-spec)))))
30753078
(when-not (every? #{:only :rename} (keys parsed-spec))
30763079
(throw (error env (str err-str (pr-str parsed-spec)))))

src/test/clojure/cljs/analyzer_tests.clj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -389,9 +389,9 @@
389389

390390
(deftest test-parse-global-refer
391391
(let [parsed (ana/parse-global-refer-spec {}
392-
'((:refer-global :only [Date] :rename {Symbol JSSymbol})))]
392+
'((:refer-global :only [Date Symbol] :rename {Symbol JSSymbol})))]
393393
(is (= parsed
394-
'{:use {Date js}
394+
'{:use {Date js Symbol js}
395395
:rename {JSSymbol js/Symbol}}))))
396396

397397
(deftest test-cljs-1785-js-shadowed-by-local
@@ -1564,4 +1564,4 @@
15641564

15651565
(clojure.test/test-vars [#'test-refer-global])
15661566

1567-
)
1567+
)

0 commit comments

Comments
 (0)