Uploaded image for project: 'ClojureScript'
  1. CLJS-2710

High-arity .apply on spec-instrumented function throws "Invalid arity" error

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects versions: None
    • Fix versions: None
    • 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.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              arcatan Miikka Koskinen
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: