diff --git a/src/clj/cljs/compiler.clj b/src/clj/cljs/compiler.clj index 57c07e66cd..bbae16e0ed 100644 --- a/src/clj/cljs/compiler.clj +++ b/src/clj/cljs/compiler.clj @@ -422,7 +422,7 @@ (emitln "var self__ = this;")) (when variadic (emitln "var " (last params) " = null;") - (emitln "if (goog.isDef(var_args)) {") + (emitln "if (arguments.length > " (dec (count params)) ") {") (emitln " " (last params) " = cljs.core.array_seq(Array.prototype.slice.call(arguments, " (dec (count params)) "),0);") (emitln "} ")) (emitln "return " delegate-name ".call(" (string/join ", " (cons "this" params)) ");") diff --git a/test/cljs/cljs/core_test.cljs b/test/cljs/cljs/core_test.cljs index b67898213a..10a99fa7b9 100644 --- a/test/cljs/cljs/core_test.cljs +++ b/test/cljs/cljs/core_test.cljs @@ -1828,5 +1828,10 @@ (assert (= (reduce-kv + 0 (apply hash-map (range 1000))) (reduce + (range 1000)))) + ;; CLJS-477 + + (assert (= [js/undefined 1 2] ((fn [& more] more) js/undefined 1 2))) + (assert (= [js/undefined 4 5] ((fn [a b & more] more) 1 2 js/undefined 4 5))) + :ok )