<< Back to previous view

[CLJS-2710] High-arity .apply on spec-instrumented function throws "Invalid arity" error Created: 27/Mar/18  Updated: 15/Jun/18

Status: Open
Project: ClojureScript
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Defect Priority: Major
Reporter: Miikka Koskinen Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None
Environment:

ClojureScript 1.10.238



 Description   

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.



 Comments   
Comment by David Nolen [ 27/Mar/18 4:40 PM ]

See CLJS-364 & CLJS-365

Comment by A. R [ 28/Mar/18 1:22 AM ]

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

Comment by David Nolen [ 28/Mar/18 10:35 AM ]

Ah great, thanks for the tests.

Comment by David Nolen [ 10/Jun/18 12:28 PM ]

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.

Generated at Fri Apr 26 05:30:59 CDT 2019 using JIRA 4.4#649-r158309.