From 7ae8bed997d2395814eff4ce639ea08116ce6557 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imre=20K=C3=B3sz=C3=B3?= Date: Fri, 19 Jan 2024 22:06:47 +0100 Subject: [PATCH] fix MapEntry not found error in clj --- src/net/cgrand/xforms.cljc | 12 +++++++----- test/net/cgrand/xforms_test.cljc | 6 ++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/net/cgrand/xforms.cljc b/src/net/cgrand/xforms.cljc index 7c00754..775e94a 100644 --- a/src/net/cgrand/xforms.cljc +++ b/src/net/cgrand/xforms.cljc @@ -105,11 +105,13 @@ (if (destructuring-pair? arg) (let [[karg varg] arg] `([~acc ~karg ~varg] ~@body)) - `([~acc k# v#] (let [~arg - (macros/case - :clj (clojure.lang.MapEntry. k# v#) - :cljs [k# v#] - :cljd (MapEntry k# v#))] ~@body))))) + (let [k (gensym "k__") + v (gensym "v__") + arg-value (macros/case + :clj `(clojure.lang.MapEntry. ~k ~v) + :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)] `([~acc [~karg ~varg]] ~@body))))] `(reify diff --git a/test/net/cgrand/xforms_test.cljc b/test/net/cgrand/xforms_test.cljc index 18b9b1f..16c9eb2 100644 --- a/test/net/cgrand/xforms_test.cljc +++ b/test/net/cgrand/xforms_test.cljc @@ -158,3 +158,9 @@ '(a b) 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))))