              _ (validate-impls env impls)
              resolve (partial resolve-var env)
              impl-map (->impl-map impls)
-             [type assign-impls] (if-let [type (base-type type-sym)]
+             [type assign-impls] (core/if-let [type (base-type type-sym)]
                                    [type base-assign-impls]
                                    [(resolve type-sym) proto-assign-impls])]
     (core/when (core/and (:extending-base-js-type cljs.analyzer/*cljs-warnings*)

(core/defmacro js-obj [& rest]
  (core/let [sym-or-str? (core/fn [x] (core/or (core/symbol? x) (core/string? x)))
             filter-on-keys (core/fn [f coll]
                              (->> coll
                                (filter (core/fn [[k _]] (f k)))
                                (into {})))
             kvs (into {} (map vec (partition 2 rest)))

        `(let [~esym ~e] (case* ~esym ~tests ~thens ~default)))

      (every? core/keyword? tests)
      (core/let [tests (core/->> tests
                         (map #(.substring (core/str %) 1))
                         vec
                         (mapv #(if (seq? %) (vec %) [%])))
