Skip to content

Commit 3bc902b

Browse files
committed
refactor last commit to produce a more informative error as well as
cover all invalid arity cases for keywords
1 parent cc7404a commit 3bc902b

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/main/clojure/cljs/analyzer.cljc

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2185,19 +2185,19 @@
21852185

21862186
(defn parse-invoke*
21872187
[env [f & args :as form]]
2188-
(let [enve (assoc env :context :expr)
2189-
fexpr (analyze enve f)
2190-
argc (count args)
2191-
^boolean fn-var? (-> fexpr :info :fn-var)
2192-
kw? (= 'cljs.core/Keyword (:tag fexpr))]
2193-
(when (or fn-var? kw?)
2188+
(let [enve (assoc env :context :expr)
2189+
fexpr (analyze enve f)
2190+
argc (count args)
2191+
fn-var? (-> fexpr :info :fn-var)
2192+
kw? (= 'cljs.core/Keyword (:tag fexpr))]
2193+
(when ^boolean fn-var?
21942194
(let [{:keys [^boolean variadic max-fixed-arity method-params name]} (:info fexpr)]
2195-
(when (or (and kw? (zero? argc))
2196-
(and (not kw?)
2197-
(not (valid-arity? argc method-params))
2198-
(or (not variadic)
2199-
(and variadic (< argc max-fixed-arity)))))
2195+
(when (and (not (valid-arity? argc method-params))
2196+
(or (not variadic)
2197+
(and variadic (< argc max-fixed-arity))))
22002198
(warning :fn-arity env {:name name :argc argc}))))
2199+
(when (and kw? (not (or (== 1 argc) (== 2 argc))))
2200+
(warning :fn-arity env {:name (first form) :argc argc}))
22012201
(let [deprecated? (-> fexpr :info :deprecated)
22022202
no-warn? (-> form meta :deprecation-nowarn)]
22032203
(when (and (boolean deprecated?)

0 commit comments

Comments
 (0)