diff --git a/src/clj/com/rpl/specter/defhelpers.clj b/src/clj/com/rpl/specter/defhelpers.clj index f409b1e..31a4a39 100644 --- a/src/clj/com/rpl/specter/defhelpers.clj +++ b/src/clj/com/rpl/specter/defhelpers.clj @@ -3,13 +3,13 @@ (defn gensyms [amt] (vec (repeatedly amt gensym))) -(defmacro define-ParamsNeededPath [fn-type invoke-name var-arity-impl] +(defmacro define-ParamsNeededPath [clj? fn-type invoke-name var-arity-impl] (let [a (with-meta (gensym "array") {:tag 'objects}) impls (for [i (range 21) :let [args (vec (gensyms i)) setters (for [j (range i)] `(aset ~a ~j ~(get args j)))]] `(~invoke-name [this# ~@args] - (let [~a (com.rpl.specter.impl/fast-object-array ~i)] + (let [~a (~(if clj? 'com.rpl.specter.impl/fast-object-array 'object-array) ~i)] ~@setters (com.rpl.specter.impl/bind-params* this# ~a 0) )))] diff --git a/src/clj/com/rpl/specter/impl.cljx b/src/clj/com/rpl/specter/impl.cljx index 98f52dd..d78627d 100644 --- a/src/clj/com/rpl/specter/impl.cljx +++ b/src/clj/com/rpl/specter/impl.cljx @@ -92,6 +92,7 @@ #+clj (dh/define-ParamsNeededPath + true clojure.lang.IFn invoke (applyTo [this args] @@ -100,6 +101,7 @@ #+cljs (define-ParamsNeededPath + false cljs.core/IFn -invoke (-invoke [this p01 p02 p03 p04 p05 p06 p07 p08 p09 p10