Skip to content

Commit 70e73c5

Browse files
committed
CLJS-1090: macros imported from clojure.core missing docs
Need to copy over additional metadata from original var.
1 parent 4b80a31 commit 70e73c5

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

src/clj/cljs/core.clj

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,30 @@
4747
(defmacro import-macros [ns [& vars]]
4848
(core/let [ns (find-ns ns)
4949
vars (map #(ns-resolve ns %) vars)
50-
syms (map (core/fn [^clojure.lang.Var v] (core/-> v .sym (with-meta {:macro true}))) vars)
51-
defs (map (core/fn [sym var]
52-
`(do (def ~sym (deref ~var))
53-
;for AOT compilation
54-
(alter-meta! (var ~sym) assoc :macro true)))
55-
syms vars)]
56-
`(do ~@defs
57-
:imported)))
50+
syms (map
51+
(core/fn [^clojure.lang.Var v]
52+
(core/-> v .sym
53+
(with-meta
54+
(merge
55+
{:macro true}
56+
(update-in (select-keys (meta v) [:arglists :doc :file :line])
57+
[:arglists] (core/fn [arglists] `(quote ~arglists)))))))
58+
vars)
59+
defs (map
60+
(core/fn [sym var]
61+
(core/let [{:keys [arglists doc file line]} (meta sym)]
62+
`(do
63+
(def ~sym (deref ~var))
64+
;for AOT compilation
65+
(alter-meta! (var ~sym) assoc
66+
:macro true
67+
:arglists ~arglists
68+
:doc ~doc
69+
:file ~file
70+
:line ~line))))
71+
syms vars)]
72+
`(do ~@defs
73+
:imported)))
5874

5975
(import-macros clojure.core
6076
[-> ->> .. assert comment cond

0 commit comments

Comments
 (0)