Skip to content

Commit

Permalink
CLJS-268 warn on calling type constructor with wrong number of arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
netguy204 authored and David Nolen committed May 25, 2012
1 parent 931c763 commit fb240ab
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/clj/cljs/compiler.clj
Expand Up @@ -1113,7 +1113,13 @@
(disallowing-recur
(let [enve (assoc env :context :expr)
ctorexpr (analyze enve ctor)
argexprs (vec (map #(analyze enve %) args))]
argexprs (vec (map #(analyze enve %) args))
known-num-fields (:num-fields (resolve-existing-var env ctor))
argc (count args)]
(when (and known-num-fields (not= known-num-fields argc))
(warning env
(str "WARNING: Wrong number of args (" argc ") passed to " ctor)))

{:env env :op :new :form form :ctor ctorexpr :args argexprs
:children (into [ctorexpr] argexprs)})))

Expand Down Expand Up @@ -1220,7 +1226,9 @@
(let [t (munge (:name (resolve-var (dissoc env :locals) tsym)))]
(swap! namespaces update-in [(-> env :ns :name) :defs tsym]
(fn [m]
(let [m (assoc (or m {}) :name t)]
(let [m (assoc (or m {})
:name t
:num-fields (count fields))]
(if-let [line (:line env)]
(-> m
(assoc :file *cljs-file*)
Expand Down

0 comments on commit fb240ab

Please sign in to comment.