     (when (or (nil? (get-in @env/*compiler* [::namespaces ns :macros]))
               reload)
       (swap! env/*compiler* assoc-in [::namespaces ns :macros]
-        (->> (ns-interns ns)
+        (->> #?(:clj (ns-interns ns) :cljs (ns-interns* ns))
              (filter (fn [[_ ^Var v]] (.isMacro v)))
              (map (fn [[k v]]
                     [k (as-> (meta v) vm

     ([ns ext]
      (str (string/replace (munge-path ns) \. \/) "." (name ext)))))

(declare message namespaces)

(defn ast? [x]

    (when (and *analyze-deps* (seq uses))
      (check-uses uses env))
    (set! *cljs-ns* name)
    #?(:clj
       (when *load-macros*
         (load-core)
         (doseq [nsym (vals use-macros)]
           (let [k (or (:use-macros @reload)
                       (get-in @reloads [:use-macros nsym])
                       (and (= nsym name) *reload-macros* :reload))]
             (if k
               (clojure.core/require nsym k)
               (clojure.core/require nsym))
             (intern-macros nsym k)))
         (doseq [nsym (vals require-macros)]
           (let [k (or (:require-macros @reload)
                       (get-in @reloads [:require-macros nsym])
                       (and (= nsym name) *reload-macros* :reload))]
             (if k
               (clojure.core/require nsym k)
               (clojure.core/require nsym))
             (intern-macros nsym k)))
         (when (seq use-macros)
           (check-use-macros use-macros env))))
    (let [ns-info
          {:name name
           :doc (or docstring mdocstr)
