Skip to content

Commit fdb9c7a

Browse files
committed
- add case to missing-use for global referred vars
- add unit test
1 parent 688a216 commit fdb9c7a

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

src/main/clojure/cljs/analyzer.cljc

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2821,12 +2821,14 @@
28212821
(error-message :undeclared-ns {:ns-sym dep :js-provide (name dep)}))))))))))))
28222822

28232823
(defn missing-use? [lib sym cenv]
2824-
(let [js-lib (get-in cenv [:js-dependency-index (name lib)])]
2825-
(and (= (get-in cenv [::namespaces lib :defs sym] ::not-found) ::not-found)
2826-
(not (= (get js-lib :group) :goog))
2827-
(not (get js-lib :closure-lib))
2828-
(not (node-module-dep? lib))
2829-
(not (dep-has-global-exports? lib)))))
2824+
;; ignore globals referred via :refer-global
2825+
(when-not (= 'js lib)
2826+
(let [js-lib (get-in cenv [:js-dependency-index (name lib)])]
2827+
(and (= (get-in cenv [::namespaces lib :defs sym] ::not-found) ::not-found)
2828+
(not (= (get js-lib :group) :goog))
2829+
(not (get js-lib :closure-lib))
2830+
(not (node-module-dep? lib))
2831+
(not (dep-has-global-exports? lib))))))
28302832

28312833
(defn missing-rename? [sym cenv]
28322834
(let [lib (symbol (namespace sym))

src/test/clojure/cljs/analyzer_tests.clj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,12 @@
554554
(analyze test-env
555555
'(map #(require '[clojure.set :as set]) [1 2]))))))
556556

557+
(deftest test-analyze-refer-global
558+
(testing "refer-global macro expr return expected AST"
559+
(let [test-env (ana/empty-env)]
560+
(is (= (-> (analyze test-env '(refer-global :only '[Date])) :uses vals set)
561+
'#{js})))))
562+
557563
(deftest test-gen-user-ns
558564
;; note: can't use `with-redefs` because direct-linking is enabled
559565
(let [s "src/cljs/foo.cljs"

0 commit comments

Comments
 (0)