|
26 | 26 | (throw (IllegalArgumentException.
|
27 | 27 | (str "Calling import-fn on a macro: " sym))))
|
28 | 28 |
|
29 |
| - `(do |
30 |
| - (def ~(with-meta n {:protocol protocol}) (deref ~vr)) |
31 |
| - (alter-meta! (var ~n) merge (dissoc (meta ~vr) :name)) |
32 |
| - (link-vars ~vr (var ~n)) |
33 |
| - ~vr)))) |
| 29 | + `(let [vr# (resolve '~sym)] |
| 30 | + (def ~(with-meta n {:protocol protocol}) (deref vr#)) |
| 31 | + (alter-meta! (var ~n) merge (dissoc (meta vr#) :name)) |
| 32 | + (link-vars vr# (var ~n)) |
| 33 | + vr#)))) |
34 | 34 |
|
35 | 35 | (defmacro import-macro
|
36 | 36 | "Given a macro in another namespace, defines a macro with the same
|
|
48 | 48 | (when-not (:macro m)
|
49 | 49 | (throw (IllegalArgumentException.
|
50 | 50 | (str "Calling import-macro on a non-macro: " sym))))
|
51 |
| - `(do |
52 |
| - (def ~n ~(resolve sym)) |
53 |
| - (alter-meta! (var ~n) merge (dissoc (meta ~vr) :name)) |
| 51 | + `(let [vr# (resolve '~sym)] |
| 52 | + (def ~n (deref vr#)) |
| 53 | + (alter-meta! (var ~n) merge (dissoc (meta vr#) :name)) |
54 | 54 | (.setMacro (var ~n))
|
55 |
| - (link-vars ~vr (var ~n)) |
56 |
| - ~vr)))) |
| 55 | + (link-vars vr# (var ~n)) |
| 56 | + vr#)))) |
57 | 57 |
|
58 | 58 | (defmacro import-def
|
59 | 59 | "Given a regular def'd var from another namespace, defined a new var with the
|
|
68 | 68 | nspace (:ns m)]
|
69 | 69 | (when-not vr
|
70 | 70 | (throw (IllegalArgumentException. (str "Don't recognize " sym))))
|
71 |
| - `(do |
72 |
| - (def ~n @~vr) |
73 |
| - (alter-meta! (var ~n) merge (dissoc (meta ~vr) :name)) |
74 |
| - (link-vars ~vr (var ~n)) |
75 |
| - ~vr)))) |
| 71 | + `(let [vr# (resolve '~sym)] |
| 72 | + (def ~n (deref vr#)) |
| 73 | + (alter-meta! (var ~n) merge (dissoc (meta vr#) :name)) |
| 74 | + (link-vars vr# (var ~n)) |
| 75 | + vr#)))) |
76 | 76 |
|
77 | 77 | (defmacro import-vars
|
78 | 78 | "Imports a list of vars from other namespaces."
|
|
0 commit comments