                             bit-test bit-shift-left bit-shift-right bit-xor
 
                             cond-> cond->> as-> some-> some->>])
-  (:require clojure.walk))
+  (:require clojure.walk)
+  (:require cljs.compiler))
 
 (alias 'core 'clojure.core)
 

  ([] true)
  ([x] x)
  ([x & next]
   `(let [and# ~x]
      (if and# (and ~@next) and#))))

(defmacro or
  "Evaluates exprs one at a time, from left to right. If a form

(defn bool-expr [e]
  (vary-meta e assoc :tag 'boolean))

(defn simple-bool-expr? [ast]
  (core/and
    (#{:var :invoke :constant :dot} (:op ast))
    (= (cljs.compiler/infer-tag ast) 'boolean)))

(defmacro and
  "Evaluates exprs one at a time, from left to right. If a form
  returns logical false (nil or false), and returns that value and
