                                        [:namespaces ns :macro-aliases (symbol sym-ns)])]
                 (ns-resolve full-ns (name sym))
                 (ns-resolve sym-ns (name sym)))
-              (or (get-in (env/deref-env) [:namespaces ns :macro-mappings sym])
-                  (ns-resolve 'cljs.core sym)))]
+              (get-in (env/deref-env) [:namespaces ns :macro-mappings sym]))]
     (when (:macro (meta var))
       var)))
 
+;; should js/foo and (js/foo) be handled in a separate op?
 (defn desugar-host-expr [form env]
   (cond
    (symbol? form)

                                (if as
                                  (assoc m as ns)
                                  m)) {} require-macros)
        macro-mappings (reduce (fn [m [ns {:keys [refer]}]]
                                 (clojure.core/require ns)
                                 (reduce #(assoc %1 %2 (ns-resolve ns (name %2))) m refer))

  (or (-> (env/deref-env) :namespaces ns)
      (analyze-ns ns)))

(defn core-macros []
  (reduce-kv (fn [m k v]
               (if (:macro (meta v))
                 (assoc m k v)
                 m))
             {} (ns-interns 'cljs.core)))

(defn populate-env
  [{:keys [import require require-macros refer-clojure]} ns-name env]
  (let [imports (reduce-kv (fn [m prefix suffixes]
