Skip to content

Commit

Permalink
warn on referred vars that don't exist. parse-ns should not emit warn…
Browse files Browse the repository at this point in the history
…ings
  • Loading branch information
swannodette committed Sep 29, 2013
1 parent 7153b29 commit 782e10e
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
9 changes: 9 additions & 0 deletions src/clj/cljs/analyzer.clj
Expand Up @@ -656,6 +656,13 @@
(when (io/resource relpath)
(analyze-file relpath))))))

(defn check-uses [uses env]
(doseq [[sym lib] uses]
(when (and (:undeclared *cljs-warnings*)
(= (get-in @namespaces [lib :defs sym] ::not-found) ::not-found))
(warning env
(str "WARNING: Referred var " lib "/" sym " does not exist")))))

(defmethod parse 'ns
[_ env [_ name & args :as form] _]
(assert (symbol? name) "Namespaces must be named by a symbol.")
Expand Down Expand Up @@ -744,6 +751,8 @@
{} (remove (fn [[r]] (= r :refer-clojure)) args))]
(when (seq @deps)
(analyze-deps @deps))
(when (seq uses)
(check-uses uses env))
(set! *cljs-ns* name)
(load-core)
(doseq [nsym (concat (vals requires-macros) (vals uses-macros))]
Expand Down
2 changes: 1 addition & 1 deletion src/clj/cljs/compiler.clj
Expand Up @@ -870,7 +870,7 @@
(loop [forms (ana/forms-seq src)]
(if (seq forms)
(let [env (ana/empty-env)
ast (ana/analyze env (first forms))]
ast (ana/no-warn (ana/analyze env (first forms)))]
(if (= (:op ast) :ns)
(let [ns-name (:name ast)
deps (merge (:uses ast) (:requires ast))]
Expand Down

0 comments on commit 782e10e

Please sign in to comment.