Skip to content

Commit 782e10e

Browse files
committed
warn on referred vars that don't exist. parse-ns should not emit warnings
1 parent 7153b29 commit 782e10e

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/clj/cljs/analyzer.clj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,13 @@
656656
(when (io/resource relpath)
657657
(analyze-file relpath))))))
658658

659+
(defn check-uses [uses env]
660+
(doseq [[sym lib] uses]
661+
(when (and (:undeclared *cljs-warnings*)
662+
(= (get-in @namespaces [lib :defs sym] ::not-found) ::not-found))
663+
(warning env
664+
(str "WARNING: Referred var " lib "/" sym " does not exist")))))
665+
659666
(defmethod parse 'ns
660667
[_ env [_ name & args :as form] _]
661668
(assert (symbol? name) "Namespaces must be named by a symbol.")
@@ -744,6 +751,8 @@
744751
{} (remove (fn [[r]] (= r :refer-clojure)) args))]
745752
(when (seq @deps)
746753
(analyze-deps @deps))
754+
(when (seq uses)
755+
(check-uses uses env))
747756
(set! *cljs-ns* name)
748757
(load-core)
749758
(doseq [nsym (concat (vals requires-macros) (vals uses-macros))]

src/clj/cljs/compiler.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -870,7 +870,7 @@
870870
(loop [forms (ana/forms-seq src)]
871871
(if (seq forms)
872872
(let [env (ana/empty-env)
873-
ast (ana/analyze env (first forms))]
873+
ast (ana/no-warn (ana/analyze env (first forms)))]
874874
(if (= (:op ast) :ns)
875875
(let [ns-name (:name ast)
876876
deps (merge (:uses ast) (:requires ast))]

0 commit comments

Comments
 (0)