|
42 | 42 | :req-un [::name :cljs.analyzer.specs.binding/local]
|
43 | 43 | :opt-un [::variadic? ::init ::shadow])))
|
44 | 44 |
|
45 |
| -(defmethod node :if [_] |
46 |
| - (s/merge ::base |
47 |
| - (s/keys |
48 |
| - :req-un [::test ::then] |
49 |
| - :opt-un [::else]))) |
50 |
| - |
51 |
| -(s/def ::literal? boolean?) |
52 |
| -(s/def ::val any?) |
53 |
| - |
54 |
| -(defmethod node :const [_] |
55 |
| - (s/merge ::base |
56 |
| - (s/keys |
57 |
| - :req-un [::val] |
58 |
| - ;; ::literal? is required in the AST REF, but we don't actually use it |
59 |
| - ;; should check tools.analyzer |
60 |
| - :opt-un [::literal?]))) |
61 |
| - |
62 |
| -(s/def ::keys (s/* ::node)) |
63 |
| -(s/def ::vals (s/* ::node)) |
64 |
| - |
65 |
| -(defmethod node :map [_] |
66 |
| - (s/merge ::base |
67 |
| - (s/keys :req-un [::keys ::vals]))) |
68 |
| - |
69 |
| -(s/def ::items (s/* ::node)) |
70 |
| - |
71 |
| -(defmethod node :list [_] |
72 |
| - (s/merge ::base |
73 |
| - (s/keys |
74 |
| - :req-un [::items]))) |
75 |
| - |
76 |
| -(defmethod node :vector [_] |
77 |
| - (s/merge ::base |
78 |
| - (s/keys |
79 |
| - :req-un [::items]))) |
80 |
| - |
81 |
| -(defmethod node :set [_] |
82 |
| - (s/merge ::base |
83 |
| - (s/keys |
84 |
| - :req-un [::items]))) |
85 |
| - |
86 |
| -(defmethod node :js-object [_] |
87 |
| - (s/merge ::base |
88 |
| - (s/keys |
89 |
| - :req-un [::keys ::vals]))) |
90 |
| - |
91 |
| -(defmethod node :js-array [_] |
92 |
| - (s/merge ::base |
93 |
| - (s/keys |
94 |
| - :req-un [::items]))) |
95 |
| - |
96 |
| -(s/def ::ns symbol?) |
97 |
| - |
98 |
| -(defmethod node :js-var [_] |
99 |
| - (s/merge ::base |
100 |
| - (s/keys |
101 |
| - :req-un [::ns ::name]))) |
102 |
| - |
103 |
| -(s/def ::var ::node) |
104 |
| -(s/def ::sym ::node) |
105 |
| -(s/def ::meta map?) |
106 |
| - |
107 |
| -(defmethod node :the-var [_] |
108 |
| - (s/merge ::base |
109 |
| - (s/keys |
110 |
| - :opt-un [::var ::sym ::meta]))) |
111 |
| - |
112 | 45 | (s/def ::nodes (s/* ::node))
|
113 | 46 | (s/def ::default ::node)
|
114 | 47 |
|
|
131 | 64 | (s/keys
|
132 | 65 | :req-un [::then])))
|
133 | 66 |
|
134 |
| -(s/def ::the-var ::node) |
| 67 | +(s/def ::literal? boolean?) |
| 68 | +(s/def ::val any?) |
| 69 | + |
| 70 | +(defmethod node :const [_] |
| 71 | + (s/merge ::base |
| 72 | + (s/keys |
| 73 | + :req-un [::val] |
| 74 | + ;; ::literal? is required in the AST REF, but we don't actually use it |
| 75 | + ;; should check tools.analyzer |
| 76 | + :opt-un [::literal?]))) |
135 | 77 |
|
136 | 78 | (defmethod node :def [_]
|
137 | 79 | (s/merge ::base
|
|
196 | 138 | (s/keys
|
197 | 139 | :req-un [::field ::target])))
|
198 | 140 |
|
| 141 | +(defmethod node :if [_] |
| 142 | + (s/merge ::base |
| 143 | + (s/keys |
| 144 | + :req-un [::test ::then] |
| 145 | + :opt-un [::else]))) |
| 146 | + |
199 | 147 | (s/def ::fn ::node)
|
200 | 148 |
|
201 | 149 | (defmethod node :invoke [_]
|
202 | 150 | (s/merge ::base
|
203 | 151 | (s/keys
|
204 | 152 | :req-un [::fn ::args])))
|
205 | 153 |
|
| 154 | +(s/def ::code string?) |
| 155 | + |
| 156 | +(defmethod node :js [_] |
| 157 | + (s/merge ::base |
| 158 | + (s/keys |
| 159 | + :opt-un [::code]))) |
| 160 | + |
| 161 | +(defmethod node :js-array [_] |
| 162 | + (s/merge ::base |
| 163 | + (s/keys |
| 164 | + :req-un [::items]))) |
| 165 | + |
| 166 | +(defmethod node :js-object [_] |
| 167 | + (s/merge ::base |
| 168 | + (s/keys |
| 169 | + :req-un [::keys ::vals]))) |
| 170 | + |
| 171 | +(s/def ::ns symbol?) |
| 172 | + |
| 173 | +(defmethod node :js-var [_] |
| 174 | + (s/merge ::base |
| 175 | + (s/keys |
| 176 | + :req-un [::ns ::name]))) |
| 177 | + |
206 | 178 | (s/def ::bindings (s/* ::node))
|
207 | 179 |
|
208 | 180 | (defmethod node :let [_]
|
|
215 | 187 | (s/keys
|
216 | 188 | :req-un [::bindings ::body])))
|
217 | 189 |
|
| 190 | +(s/def ::items (s/* ::node)) |
| 191 | + |
| 192 | +;; TODO: not in ast-ref |
| 193 | +(defmethod node :list [_] |
| 194 | + (s/merge ::base |
| 195 | + (s/keys |
| 196 | + :req-un [::items]))) |
| 197 | + |
218 | 198 | (defmethod node :local [_]
|
219 | 199 | (s/merge ::base
|
220 | 200 | (s/keys
|
|
225 | 205 | (s/keys
|
226 | 206 | :req-un [::bindings ::body])))
|
227 | 207 |
|
| 208 | +(s/def ::keys (s/* ::node)) |
| 209 | +(s/def ::vals (s/* ::node)) |
| 210 | + |
| 211 | +(defmethod node :map [_] |
| 212 | + (s/merge ::base |
| 213 | + (s/keys :req-un [::keys ::vals]))) |
| 214 | + |
228 | 215 | (s/def ::class ::node)
|
229 | 216 |
|
230 | 217 | (defmethod node :new [_]
|
|
259 | 246 | (s/keys
|
260 | 247 | :req-un [::target ::val])))
|
261 | 248 |
|
| 249 | +(s/def ::var ::node) |
| 250 | +(s/def ::sym ::node) |
| 251 | +(s/def ::meta map?) |
| 252 | + |
| 253 | +(defmethod node :the-var [_] |
| 254 | + (s/merge ::base |
| 255 | + (s/keys |
| 256 | + :opt-un [::var ::sym ::meta]))) |
| 257 | + |
| 258 | +(s/def ::the-var ::node) |
| 259 | + |
262 | 260 | (s/def ::exception ::node)
|
263 | 261 |
|
264 | 262 | (defmethod node :throw [_]
|
|
281 | 279 |
|
282 | 280 | (s/def ::meta ::node)
|
283 | 281 |
|
284 |
| -(defmethod node :with-meta [_] |
| 282 | +(defmethod node :vector [_] |
285 | 283 | (s/merge ::base
|
286 | 284 | (s/keys
|
287 |
| - :req-un [::meta ::expr]))) |
288 |
| - |
289 |
| -(s/def ::code string?) |
| 285 | + :req-un [::items]))) |
290 | 286 |
|
291 |
| -(defmethod node :js [_] |
| 287 | +(defmethod node :with-meta [_] |
292 | 288 | (s/merge ::base
|
293 | 289 | (s/keys
|
294 |
| - :opt-un [::code]))) |
| 290 | + :req-un [::meta ::expr]))) |
295 | 291 |
|
296 | 292 | (comment
|
297 | 293 |
|
|
0 commit comments