ClojureDart
ClojureDart copied to clipboard
Port new 1.11 behavior for associative varargs
I think this is related to issue #96.
Calling a variadic function that contains argument destructuring fails with the following exception:
Unhandled Exception: Invalid argument(s): Index out of bounds
Example:
(defn one [& {:keys [a b]
:or {a "a" b "b"}}]
(dart:core/print (str a b)))
(one) ;=> ab
(one nil) ;=> ...Index out of bounds...
(one {}) ;=> ...Index out of bounds...
(one {:a "x"}) ;=> ...Index out of bounds...
(one {:a "x" :b "y"}) ;=> ...Index out of bounds...
(defn two [a & {:keys [b c]
:or {b "b" c "c"}}]
(dart:core/print (str a b c)))
(two "x") ;=> xbc
(two "x" nil) ;=> ...Index out of bounds...
(two "x" {}) ;=> ...Index out of bounds...
(two "x" {:b "y"}) ;=> ...Index out of bounds...
(two "x" {:b "y" :c "z"}) ;=> ...Index out of bounds...
We haven't back ported clojure 1.11 handling of varargs map destructuring.
Your code doesn't work in clojure 1.10.
However (one :a "x") should work.