From 77d29466c7c8598a04d2f7d0ca0f05b5f3e9f154 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Marczyk?= Date: Wed, 6 Jun 2012 06:07:30 +0200 Subject: [PATCH] CLJS-303: fix case so it only evaluates its first argument once --- src/clj/cljs/core.clj | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/clj/cljs/core.clj b/src/clj/cljs/core.clj index 1220ce1651..d489a16c0d 100644 --- a/src/clj/cljs/core.clj +++ b/src/clj/cljs/core.clj @@ -713,10 +713,12 @@ (if (seq? test) (reduce #(assoc-test %1 %2 expr) m test) (assoc-test m test expr))) - {} (partition 2 clauses))] - `(cond - ~@(mapcat (fn [[m c]] `((cljs.core/= ~m ~e) ~c)) pairs) - :else ~default))) + {} (partition 2 clauses)) + esym (gensym)] + `(let [~esym ~e] + (cond + ~@(mapcat (fn [[m c]] `((cljs.core/= ~m ~esym) ~c)) pairs) + :else ~default)))) (defmacro try "(try expr* catch-clause* finally-clause?)