From 9319579acfc4fc9dbcf6e79f611afad707f97579 Mon Sep 17 00:00:00 2001 From: David Nolen Date: Tue, 10 Apr 2012 20:35:23 -0400 Subject: [PATCH] * src/cljs/cljs/core.cljs: fix type to return nil for types w/o constructors --- src/cljs/cljs/core.cljs | 4 +++- test/cljs/cljs/core_test.cljs | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cljs/cljs/core.cljs b/src/cljs/cljs/core.cljs index 87f72613fd..51b885f5de 100644 --- a/src/cljs/cljs/core.cljs +++ b/src/cljs/cljs/core.cljs @@ -245,7 +245,9 @@ (identical? x nil)) (defn type [x] - (js* "(~{x}).constructor")) + (if (or (nil? x) (undefined? x)) + nil + (js* "(~{x}).constructor"))) ;;;;;;;;;;;;;;;;;;; protocols on primitives ;;;;;;;; (declare hash-map list equiv-sequential) diff --git a/test/cljs/cljs/core_test.cljs b/test/cljs/cljs/core_test.cljs index 8b6230719c..9ae4ea9c9a 100644 --- a/test/cljs/cljs/core_test.cljs +++ b/test/cljs/cljs/core_test.cljs @@ -609,6 +609,8 @@ ;; js->clj (assert (= {"a" 1, "b" 2} (js->clj (js* "{\"a\":1,\"b\":2}")))) + (assert (= {"a" nil} (js->clj (js* "{\"a\":null}")))) + (assert (= {"a" true, "b" false} (js->clj (js* "{\"a\":true,\"b\":false}")))) (assert (= {:a 1, :b 2} (js->clj (js* "{\"a\":1,\"b\":2}") :keywordize-keys true))) (assert (= [[{:a 1, :b 2} {:a 1, :b 2}]] (js->clj (js* "[[{\"a\":1,\"b\":2}, {\"a\":1,\"b\":2}]]") :keywordize-keys true)))