cljs.user=> (def a #js {})
#'cljs.user/a
cljs.user=> (set! a -x false)
WARNING: Use of undeclared Var cljs.user/-x at line 1 <cljs repl>
nil
cljs.user=> a
nil
The root cause is that the code below taken from cljs.analyzer
does not distinguish between a false/nil alt
and a completely missing value.
(defmethod parse 'set!
[_ env [_ target val alt :as form] _ _]
(let [[target val] (if alt
;; (set! o -prop val)
[`(. ~target ~val) alt]
[target val])]
...))
One way to fix it would be to check the value of (count form)
explicitly.