Share your thoughts in the 2024 State of Clojure Survey!

Welcome! Please see the About page for a little more info on how this works.

0 votes
in ClojureScript by

With ClojureScript 1.10.238, if you call {{.apply}} with over 21 arguments on a function that has been instrumented with {{cljs.spec.test.alpha/instrument}}, you will get an error about invalid arity. This problem does not occur with ClojureScript 1.9.954.

`
(require '[cljs.spec.alpha :as s] '[cljs.spec.test.alpha :as stest])

(defn my-fun [& args] (prn :args args))
(s/fdef my-fun :args (s/cat :args (s/* any?)))

(.apply my-fun nil (into-array (range 22)))
;; :args (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21)

(stest/instrument)
(.apply my-fun nil (into-array (range 22)))
;; Error: Invalid arity: 22
;; at Function.G__10112 [as call] (.../cljs/core.js:6798:7)
;; at Function.cljs.core.MetaFn.apply (.../cljs/core.js:6829:24)
;; at repl:1:96
`

Regular {{apply}} works as expected.

5 Answers

0 votes
by

Comment made by: dnolen

See CLJS-364 & CLJS-365

0 votes
by

Comment made by: aralo

Some of these are (commented out) but added in the patch for the apply test suit: CLJS-2147

0 votes
by

Comment made by: dnolen

Ah great, thanks for the tests.

0 votes
by

Comment made by: dnolen

Revisiting this now that I'm working on CLJS-2761, why do we need to support .apply? I don't think this was ever promised.

0 votes
by
Reference: https://clojure.atlassian.net/browse/CLJS-2710 (reported by arcatan)
...