-
Notifications
You must be signed in to change notification settings - Fork 1
/
utils.clj
26 lines (24 loc) · 1 KB
/
utils.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
(ns tech.parallel.utils)
(defmacro export-symbols
[src-ns & symbol-list]
`(do
(require '~src-ns)
~@(->> symbol-list
(mapv
(fn [sym-name]
`(let [varval# (requiring-resolve (symbol ~(name src-ns)
~(name sym-name)))
var-meta# (meta varval#)]
(when (:macro var-meta#)
(throw
(ex-info
(format "Cannot export macros as this breaks aot: %s"
'~sym-name)
{:symbol '~sym-name})))
(def ~(symbol (name sym-name)) @varval#)
(alter-meta! #'~(symbol (name sym-name))
merge
(select-keys var-meta#
[:file :line :column
:doc
:column :tag]))))))))