     (let [forms (concat [x] next)]
       (if (every? simple-test-expr?
             (map #(cljs.analyzer/analyze &env %) forms))
-        (let [or-str (->> (repeat (count forms) "~{}")
+        (let [or-str (->> (repeat (count forms) "(~{})")
                         (interpose " || ")
                         (apply core/str))]
           (bool-expr `(~'js* ~or-str ~@forms)))


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

(defmacro and

    (let [forms (concat [x] next)]
      (if (every? simple-test-expr?
            (map #(cljs.analyzer/analyze &env %) forms))
        (let [and-str (->> (repeat (count forms) "(~{})")
                        (interpose " && ")
                        (apply core/str))]
          (bool-expr `(~'js* ~and-str ~@forms)))
