-
Notifications
You must be signed in to change notification settings - Fork 51
Closed
Description
It looks like the formatter is changing symbolic values to null
during internal processing:
(pr-str ##NaN)
;; "##NaN"
(pr-str [##NaN])
;; "[##NaN]"
(. js/console log #js [##NaN ##Inf ##-Inf])
;; [NaN, Infinity, -Infinity]
(. js/console log [##NaN ##Inf ##-Inf])
;; [null null null]
This initial attempt seems to fix it - at least through inspection of the demo page with symbolic values added.
modified src/lib/devtools/formatters/helpers.cljs
@@ -62,6 +62,11 @@
(defn bool? [value]
(or (true? value) (false? value)))
+(defn symbolic-value? [value]
+ (or (js/Number.isNaN value)
+ (= js/Number.POSITIVE_INFINITY value)
+ (= js/Number.NEGATIVE_INFINITY value)))
+
(defn instance-of-a-well-known-type? [value]
(let [well-known-types (pref :well-known-types)
constructor-fn (get-constructor value)
@@ -76,7 +81,8 @@
(defn directly-printable? [value]
(or (string? value)
(number? value)
- (bool? value)))
+ (bool? value)
+ (symbolic-value? value)))
I had no success getting it to pass the whole test suite. Some issues were just phantomjs
/chrome differences[1], but others might indicate that this approach might conflict with other internal mechanisms.
[1] - e.g. Phantom seems to lack the safer Number.isNaN
, but has the old isNaN
.
We're running devtools with shadow-cljs:
thheller/shadow-cljs: "2.8.68"
binaryage/devtools: "0.9.10"
clojurescript: "1.10.520"
Metadata
Metadata
Assignees
Labels
No labels