From cbba7eb64287b72ec4f1a1f78e51daa1bc77cf81 Mon Sep 17 00:00:00 2001 From: Brandon Bloom Date: Sat, 22 Dec 2012 14:30:57 -0800 Subject: [PATCH] CLJS-301: Move 'instance? to core.clj --- src/clj/cljs/core.clj | 7 ++++++- src/cljs/cljs/core.cljs | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/clj/cljs/core.clj b/src/clj/cljs/core.clj index de58a39..5941ac1 100644 --- a/src/clj/cljs/core.clj +++ b/src/clj/cljs/core.clj @@ -15,7 +15,7 @@ memfn ns or proxy proxy-super pvalues refer-clojure reify sync time when when-first when-let when-not while with-bindings with-in-str with-loading-context with-local-vars with-open with-out-str with-precision with-redefs - satisfies? identical? true? false? nil? str get + satisfies? instance? identical? true? false? nil? str get aget aset + - * / < <= > >= == zero? pos? neg? inc dec max min mod @@ -205,6 +205,11 @@ (defmacro undefined? [x] (bool-expr (list 'js* "(void 0 === ~{})" x))) +(defmacro instance? [t o] + (bool-expr (if (symbol? t) + (list 'js* "(~{} instanceof ~{})" o t) + `(let [t# ~t] (~'js* "(~{} instanceof ~{})" ~o t#))))) + (defmacro identical? [a b] (bool-expr (list 'js* "(~{} === ~{})" a b))) diff --git a/src/cljs/cljs/core.cljs b/src/cljs/cljs/core.cljs index a6a4379..a089a38 100644 --- a/src/cljs/cljs/core.cljs +++ b/src/cljs/cljs/core.cljs @@ -373,7 +373,7 @@ (.-constructor x))) (defn ^boolean instance? [t o] - (js* "(~{o} instanceof ~{t})")) + (cljs.core/instance? t o)) ;;;;;;;;;;;;;;;;;;; protocols on primitives ;;;;;;;; (declare hash-map list equiv-sequential) @@ -6166,7 +6166,7 @@ reduces them without incurring seq initialization" ;;;;;;;;;;;;;;;;;;;;;;;;; Regular Expressions ;;;;;;;;;; (defn regexp? [o] - (js* "~{o} instanceof RegExp")) + (cljs.core/instance? js/RegExp o)) (defn re-matches "Returns the result of (re-find re s) if re fully matches s." -- 1.8.0.2