|
2773 | 2773 | (.push ~dest (aget (js-arguments) i#))
|
2774 | 2774 | (recur (inc i#))))))
|
2775 | 2775 |
|
2776 |
| -(core/defn- variadic-fn [name meta [[arglist & body :as method] :as fdecl]] |
| 2776 | +(core/defn- variadic-fn [name meta [[arglist & body :as method] :as fdecl] emit-var?] |
2777 | 2777 | (core/letfn [(dest-args [c]
|
2778 | 2778 | (map (core/fn [n] `(aget (js-arguments) ~n))
|
2779 | 2779 | (range c)))]
|
|
2797 | 2797 | (.slice args# ~c-1) 0 nil))]
|
2798 | 2798 | (. ~rname
|
2799 | 2799 | (~'cljs$core$IFn$_invoke$arity$variadic ~@(dest-args c-1) argseq#))))))
|
2800 |
| - ~(variadic-fn* rname method))))) |
| 2800 | + ~(variadic-fn* rname method) |
| 2801 | + ~(core/when emit-var? `(var ~name)))))) |
2801 | 2802 |
|
2802 | 2803 | (core/comment
|
2803 | 2804 | (require '[clojure.pprint :as pp])
|
|
2807 | 2808 | (pp/pprint (variadic-fn 'foo {} '(([a [b & cs] & xs] xs))))
|
2808 | 2809 | )
|
2809 | 2810 |
|
2810 |
| -(core/defn- multi-arity-fn [name meta fdecl] |
| 2811 | +(core/defn- multi-arity-fn [name meta fdecl emit-var?] |
2811 | 2812 | (core/letfn [(dest-args [c]
|
2812 | 2813 | (map (core/fn [n] `(aget (js-arguments) ~n))
|
2813 | 2814 | (range c)))
|
|
2863 | 2864 | (str "Invalid arity: " (alength ~args-sym))))))))))
|
2864 | 2865 | ~@(map fn-method fdecl)
|
2865 | 2866 | ;; optimization properties
|
2866 |
| - (set! (. ~name ~'-cljs$lang$maxFixedArity) ~maxfa))))) |
| 2867 | + (set! (. ~name ~'-cljs$lang$maxFixedArity) ~maxfa) |
| 2868 | + ~(core/when emit-var? `(var ~name)))))) |
2867 | 2869 |
|
2868 | 2870 | (core/comment
|
2869 | 2871 | (require '[clojure.pprint :as pp])
|
|
2932 | 2934 | (multi-arity-fn name
|
2933 | 2935 | (if (comp/checking-types?)
|
2934 | 2936 | (update-in m [:jsdoc] conj "@param {...*} var_args")
|
2935 |
| - m) fdecl) |
| 2937 | + m) fdecl (:def-emits-var &env)) |
2936 | 2938 |
|
2937 | 2939 | (variadic-fn? fdecl)
|
2938 | 2940 | (variadic-fn name
|
2939 | 2941 | (if (comp/checking-types?)
|
2940 | 2942 | (update-in m [:jsdoc] conj "@param {...*} var_args")
|
2941 |
| - m) fdecl) |
| 2943 | + m) fdecl (:def-emits-var &env)) |
2942 | 2944 |
|
2943 | 2945 | :else
|
2944 | 2946 | (core/list 'def (with-meta name m)
|
|
0 commit comments