Skip to content

Commit 00309e8

Browse files
rauhsdnolen
authored andcommitted
CLJS-2030: Case with grouped keyword test emit result-expr multiple times
Improves case macro when grouping keywords. Now the result expression is only emitted once.
1 parent 4a418c9 commit 00309e8

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

src/main/clojure/cljs/core.cljc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2248,11 +2248,10 @@
22482248
`(let [~esym ~e] (case* ~esym ~tests ~thens ~default)))
22492249

22502250
(every? core/keyword? tests)
2251-
(core/let [tests (core/->> tests
2252-
(map #(.substring (core/str %) 1))
2253-
vec
2254-
(mapv #(if (seq? %) (vec %) [%])))
2255-
thens (vec (vals pairs))]
2251+
(core/let [no-default (if (odd? (count clauses)) (butlast clauses) clauses)
2252+
kw-str #(.substring (core/str %) 1)
2253+
tests (mapv #(if (seq? %) (mapv kw-str %) [(kw-str %)]) (take-nth 2 no-default))
2254+
thens (vec (take-nth 2 (drop 1 no-default)))]
22562255
`(let [~esym ~e
22572256
~esym (if (keyword? ~esym) (.-fqn ~esym) nil)]
22582257
(case* ~esym ~tests ~thens ~default)))

0 commit comments

Comments
 (0)