Skip to content

Commit d450122

Browse files
mfikesswannodette
authored andcommitted
CLJS-2374: Print js/Infinity, js/-Infinity, js/NaN using new reader literals
1 parent 4d2d258 commit d450122

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

benchmark/cljs/benchmark_runner.cljs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,4 +407,12 @@
407407
(simple-benchmark [] (str "1") 1000000)
408408
(simple-benchmark [] (str "1" "2") 1000000)
409409
(simple-benchmark [] (str "1" "2" "3") 1000000)
410+
411+
(println ";; printing of numbers and handling of ##Nan, ##Inf, ##-Inf")
412+
(simple-benchmark [x true] (pr-str x) 1000000)
413+
(simple-benchmark [x 10] (pr-str x) 1000000)
414+
(simple-benchmark [x js/NaN] (pr-str x) 1000000)
415+
(simple-benchmark [x js/Infinity] (pr-str x) 1000000)
416+
(simple-benchmark [x js/-Infinity] (pr-str x) 1000000)
417+
(simple-benchmark [x (js-obj)] (pr-str x) 1000000)
410418
(println)

src/main/cljs/cljs/core.cljs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9659,9 +9659,17 @@ reduces them without incurring seq initialization"
96599659
(implements? IPrintWithWriter obj)
96609660
(-pr-writer ^not-native obj writer opts)
96619661

9662-
(or (true? obj) (false? obj) (number? obj))
9662+
(or (true? obj) (false? obj))
96639663
(-write writer (str obj))
96649664

9665+
(number? obj)
9666+
(-write writer
9667+
(cond
9668+
^boolean (js/isNaN obj) "##NaN"
9669+
(identical? obj js/Number.POSITIVE_INFINITY) "##Inf"
9670+
(identical? obj js/Number.NEGATIVE_INFINITY) "##-Inf"
9671+
:else (str obj)))
9672+
96659673
(object? obj)
96669674
(do
96679675
(-write writer "#js ")

src/test/cljs/cljs/core_test.cljs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1472,6 +1472,11 @@
14721472
(let [a (atom :usual-value)]
14731473
(is (= :usual-value (reset! a (first (reset-vals! a :almost-never-seen-value)))))))
14741474

1475+
(deftest test-cljs-2374
1476+
(is (= "##NaN" (pr-str js/NaN)))
1477+
(is (= "##Inf" (pr-str js/Infinity)))
1478+
(is (= "##-Inf" (pr-str js/-Infinity))))
1479+
14751480
(comment
14761481
;; ObjMap
14771482
;; (let [ks (map (partial str "foo") (range 500))

0 commit comments

Comments
 (0)