File tree Expand file tree Collapse file tree 1 file changed +51
-1
lines changed
src/main/clojure/clojure/tools/analyzer Expand file tree Collapse file tree 1 file changed +51
-1
lines changed Original file line number Diff line number Diff line change 48
48
(:import (clojure.lang IObj RT Compiler Var)
49
49
java.net.URL))
50
50
51
+ (def ns-safe-macro
52
+ " Clojure macros that are known to not alter namespaces"
53
+ #{#'clojure.core/->
54
+ #'clojure.core/->>
55
+ #'clojure.core/..
56
+ #'clojure.core/and
57
+ #'clojure.core/as->
58
+ #'clojure.core/assert
59
+ #'clojure.core/case
60
+ #'clojure.core/cond
61
+ #'clojure.core/cond->
62
+ #'clojure.core/cond->>
63
+ #'clojure.core/condp
64
+ #'clojure.core/defn
65
+ #'clojure.core/defn-
66
+ #'clojure.core/delay
67
+ #'clojure.core/doseq
68
+ #'clojure.core/dosync
69
+ #'clojure.core/dotimes
70
+ #'clojure.core/doto
71
+ #'clojure.core/fn
72
+ #'clojure.core/for
73
+ #'clojure.core/future
74
+ #'clojure.core/if-let
75
+ #'clojure.core/if-not
76
+ #'clojure.core/lazy-seq
77
+ #'clojure.core/let
78
+ #'clojure.core/letfn
79
+ #'clojure.core/loop
80
+ #'clojure.core/or
81
+ #'clojure.core/reify
82
+ #'clojure.core/some->
83
+ #'clojure.core/some->>
84
+ #'clojure.core/sync
85
+ #'clojure.core/time
86
+ #'clojure.core/vswap!
87
+ #'clojure.core/when
88
+ #'clojure.core/when-let
89
+ #'clojure.core/when-not
90
+ #'clojure.core/while
91
+ #'clojure.core/with-open
92
+ #'clojure.core/with-out-str
93
+ #'clojure.test/are
94
+ #'clojure.test/deftest
95
+ #'clojure.test/deftest-
96
+ #'clojure.test/is
97
+ #'clojure.test/testing
98
+ #'clojure.test/try-expr})
99
+
51
100
(def specials
52
101
" Set of the special forms for clojure in the JVM"
53
102
(into ana/specials
147
196
148
197
macro?
149
198
(let [res (apply v form (:locals env) (rest form))] ; (m &form &env & args)
150
- (update-ns-map! )
199
+ (when-not (ns-safe-macro v)
200
+ (update-ns-map! ))
151
201
(if (obj? res)
152
202
(vary-meta res merge (meta form))
153
203
res))
You can’t perform that action at this time.
0 commit comments