                (when (not= (-> env :ns :name) full-ns)
                  (confirm-ns env full-ns))
                (confirm env full-ns (symbol (name sym))))
-             (merge (get-in @env/*compiler* [::namespaces full-ns :defs (symbol (name sym))])
+             (merge (gets @env/*compiler* ::namespaces full-ns :defs (symbol (name sym)))
                     {:name (symbol (str full-ns) (str (name sym)))
                      :ns full-ns}))
 

  (when (and (nil? (get '#{cljs.core goog Math goog.string} ns-sym))
             (nil? (get (-> env :ns :requires) ns-sym))
             ;; something else may have loaded the namespace, i.e. load-file
             (nil? (get-in @env/*compiler* [::namespaces ns-sym]))
             ;; macros may refer to namespaces never explicitly required
             ;; confirm that the library at least exists
             #?(:clj (nil? (util/ns->source ns-sym))))

    (some-> env :ns :require-macros (get (symbol nstr)) find-ns)))

(defn get-expander* [sym env]
  (when-not (or (not (nil? (gets env :locals sym))) ; locals hide macros
                (and (excluded? env sym) (not (used? env sym))))
    (let [nstr (namespace sym)]
      (if-not (nil? nstr)
        (let [ns (get-expander-ns env nstr)]
          (when-not (nil? ns)
            (.findInternedVar ^clojure.lang.Namespace ns (symbol (name sym)))))
        (let [nsym (gets env :ns :use-macros sym)]
          (if-not (nil? nsym)
            (.findInternedVar ^clojure.lang.Namespace
            #?(:clj (find-ns nsym) :cljs (find-macros-ns nsym)) sym)
