;; test-sources/codox_test/macro.cljc (ns codox-test.macro) (defmacro test2 [a & xs] `(reduce + ~a ~(vec xs)))
(let [file (java.io.File. "test-sources/codox_test/macro.cljc")] (let [state (cljs.analyzer.api/empty-state)] (binding [cljs.analyzer/*analyze-deps* false] (cljs.analyzer.api/analyze-file state file {})) (->> (cljs.analyzer.api/ns-publics state 'codox-test.macro) (map (fn [[name m]] [name (:arglists m)])) (into {}))))
returns
{test2 ([&form &env a & xs])}
contrary, clojure's ns-publics:
(->> (vals (ns-publics 'codox-test.macro)) (map meta) (map (fn [m] [(:name m) (:arglists m)])) (into {}))
{test2 ([a & xs])}
I didn't notice this issue with macros that don't use {& rest} style arglists.
;; test-sources/codox_test/macro.cljc (ns codox-test.macro) (defmacro test2 [a & xs] `(reduce + ~a ~(vec xs)))
(let [file (java.io.File. "test-sources/codox_test/macro.cljc")] (let [state (cljs.analyzer.api/empty-state)] (binding [cljs.analyzer/*analyze-deps* false] (cljs.analyzer.api/analyze-file state file {})) (->> (cljs.analyzer.api/ns-publics state 'codox-test.macro) (map (fn [[name m]] [name (:arglists m)])) (into {}))))
returns
{test2 ([&form &env a & xs])}
contrary, clojure's ns-publics:
(->> (vals (ns-publics 'codox-test.macro)) (map meta) (map (fn [m] [(:name m) (:arglists m)])) (into {}))
{test2 ([a & xs])}
I didn't notice this issue with macros that don't use {& rest} style arglists.