    if a macro namespace of the same name as the current ns is found,
    we extract all the names of all macros so later passes have an easier time
    figuring out what might be a macro"
-  [_ {:keys [op name require-macros] :as ast}]
-  (let [require-macros (vals require-macros)]
+  [_ {:keys [op name require-macros use-macros] :as ast}]
+  (let [require-macros (concat (vals require-macros)
+                               (vals use-macros))]
     (doseq [macro-ns require-macros]
       (require macro-ns))
 

              (ana/error env (ana/error-message :undeclared-ns-form {:type "var" :lib lib :sym sym})))))
        ast)))


(ns shadow.cljs.passes
  (:require [cljs.analyzer :as ana]
            [cljs.env :as env]))

(defn load-macros
