Skip to content

Commit c2487b8

Browse files
committed
- fix parse-global-refer-spec validation
- incorporate, untested
1 parent dfe9c65 commit c2487b8

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/main/clojure/cljs/analyzer.cljc

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3041,9 +3041,13 @@
30413041

30423042
(defn parse-global-refer-spec
30433043
[env args]
3044-
(let [xs (filter #(-> % first (= :refer-global)) args)]
3045-
(if-not (= 1 (count xs))
3046-
(throw (error env "Only one :refer-global form is allowed per namespace definition"))
3044+
(let [xs (filter #(-> % first (= :refer-global)) args)
3045+
cnt (count xs)]
3046+
(cond
3047+
(> cnt 1)
3048+
(throw (error env (str "Only one :refer-global form is allowed per namespace definition " (count xs))))
3049+
3050+
(== cnt 1)
30473051
(let [[_ refers & {:keys [rename] :as renames-only}] (first xs)
30483052
err-str "Only [:refer-global (names)] and optionally `:rename {from to}` specs supported"]
30493053
(when-not (and (vector? refers) (every? symbol refers))
@@ -3355,6 +3359,7 @@
33553359
core-renames (reduce (fn [m [original renamed]]
33563360
(assoc m renamed (symbol "cljs.core" (str original))))
33573361
{} core-renames)
3362+
{global-uses :use global-renames :rename} (parse-global-refer-spec env args)
33583363
deps (atom [])
33593364
;; as-aliases can only be used *once* because they are about the reader
33603365
aliases (atom {:fns as-aliases :macros as-aliases})
@@ -3416,9 +3421,9 @@
34163421
:use-macros use-macros
34173422
:require-macros require-macros
34183423
:rename-macros rename-macros
3419-
:uses uses
3424+
:uses (merge uses global-uses)
34203425
:requires requires
3421-
:renames (merge renames core-renames)
3426+
:renames (merge renames core-renames global-renames)
34223427
:imports imports}]
34233428
(swap! env/*compiler* update-in [::namespaces name] merge ns-info)
34243429
(merge {:op :ns

0 commit comments

Comments
 (0)