               (resolve-var env sym)))
           (assoc ret :op :var :info (resolve-var env sym)))))))
 
-(defn get-expander [sym env]
+(defn get-expander
+  "Given a sym, a symbol identifying a macro, and env, an analysis environment
+   return the corresponding Clojure macroexpander."
+  [sym env]
   (let [mvar
         (when-not (or (-> env :locals sym)        ;locals hide macros
                       (and (or (-> env :ns :excludes sym)

       (io/file (str target-file ".cache.edn"))))))

(defn requires-analysis?
  ([src] (requires-analysis? src "out"))
  ([src output-dir]
    (let [cache (cache-file src output-dir)]

          ('#{cljs.core/PersistentHashMap
              cljs.core/List} t)))))

(defn infer-tag
  "Given env, an analysis environment, and e, an AST node, return the inferred
   type of the node"
  [env e]
  (if-let [tag (get-tag e)]
    tag
    (case (:op e)
