              m))
       methods)))
 
-(defn type? [env t]
+(defn type?
+  #?(:cljs {:tag boolean})
+  [env t]
   ;; don't use resolve-existing-var to avoid warnings
   (when (and t (symbol? t))
     (let [var (resolve-var env t)]

            (throw err#)
            (throw (error ~env (.getMessage err#) err#)))))))

(defn implicit-import? [env prefix suffix]
  (contains? '#{goog goog.object goog.string goog.array Math} prefix))

(defn confirm-var-exists


(declare message namespaces)

(defn ast?
  #?(:cljs {:tag boolean})
  [x]
  (and (map? x) (contains? x :op)))

(defmulti error-message (fn [warning-type & _] warning-type))
