Skip to content

Commit c31e91f

Browse files
mfikesdnolen
authored and
dnolen
committed
CLJS-1589: Self-host: case fail with nil
In bootstrapped ClojureScript, case will fail with a nil test because char? will throw. This revision nil-patches the char? test conditionallyfor bootstrapped mode.
1 parent aa03451 commit c31e91f

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/main/clojure/cljs/core.cljc

+1-1
Original file line numberDiff line numberDiff line change
@@ -2140,7 +2140,7 @@
21402140
esym (gensym)
21412141
tests (keys pairs)]
21422142
(core/cond
2143-
(every? (some-fn core/number? core/string? core/char? #(const? env %)) tests)
2143+
(every? (some-fn core/number? core/string? #?(:clj core/char? :cljs (core/fnil core/char? :nonchar)) #(const? env %)) tests)
21442144
(core/let [no-default (if (odd? (count clauses)) (butlast clauses) clauses)
21452145
tests (mapv #(if (seq? %) (vec %) [%]) (take-nth 2 no-default))
21462146
thens (vec (take-nth 2 (drop 1 no-default)))]

src/test/self/self_host/test.cljs

+10
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,16 @@
653653
(is (nil? error))
654654
(is (= :aliased.core/bar value)))))))
655655

656+
(deftest test-CLJS-1589
657+
(cljs/eval-str st
658+
"(case 1 nil nil :x)"
659+
nil
660+
{:eval node-eval
661+
:context :expr}
662+
(fn [{:keys [error value]}]
663+
(is (nil? error))
664+
(is (= :x value)))))
665+
656666
#_(deftest test-eval-str-with-require
657667
(async done
658668
(let [l (latch 3 done)]

0 commit comments

Comments
 (0)