Tensegritics/ClojureDart

Port new 1.11 behavior for associative varargs

Open

#109 aperta il 13 giu 2022

Vedi su GitHub
 (1 commento) (0 reazioni) (0 assegnatari)Clojure (115 fork)batch import
help wanted

Metriche repository

Star
 (1618 star)
Metriche merge PR
 (Merge medio 11g 17h) (6 PR mergiate in 30 g)

Descrizione

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...

Guida contributor