fix MapEntry not found error in clj

This commit is contained in:
Imre Kószó 2024-01-19 22:06:47 +01:00
parent 2079b74271
commit 7ae8bed997
2 changed files with 13 additions and 5 deletions

View file

@ -105,11 +105,13 @@
(if (destructuring-pair? arg) (if (destructuring-pair? arg)
(let [[karg varg] arg] (let [[karg varg] arg]
`([~acc ~karg ~varg] ~@body)) `([~acc ~karg ~varg] ~@body))
`([~acc k# v#] (let [~arg (let [k (gensym "k__")
(macros/case v (gensym "v__")
:clj (clojure.lang.MapEntry. k# v#) arg-value (macros/case
:cljs [k# v#] :clj `(clojure.lang.MapEntry. ~k ~v)
:cljd (MapEntry k# v#))] ~@body))))) :cljs [k v]
:cljd `(MapEntry ~k ~v))]
`([~acc ~k ~v] (let [~arg ~arg-value] ~@body))))))
(not (arities 2)) (conj (let [[[acc karg varg] & body] (arities 3)] (not (arities 2)) (conj (let [[[acc karg varg] & body] (arities 3)]
`([~acc [~karg ~varg]] ~@body))))] `([~acc [~karg ~varg]] ~@body))))]
`(reify `(reify

View file

@ -158,3 +158,9 @@
'(a b) false '(a b) false
'{foo bar} false '{foo bar} false
'{foo :bar} false))) '{foo :bar} false)))
(defmacro wraps-for-with-no-destructuring []
(x/into [] (x/for [x (range 5)] x)))
(deftest for-in-macro
(is (= [0 1 2 3 4] (wraps-for-with-no-destructuring))))