|
84 | 84 | (s/keys
|
85 | 85 | :req-un [::keys ::vals])))
|
86 | 86 |
|
| 87 | +(defmethod node :js-array [_] |
| 88 | + (s/merge ::base |
| 89 | + (s/keys |
| 90 | + :req-un [::items]))) |
| 91 | + |
87 | 92 | (s/def ::ns symbol?)
|
88 | 93 |
|
89 | 94 | (defmethod node :js-var [_]
|
90 | 95 | (s/merge ::base
|
91 | 96 | (s/keys
|
92 | 97 | :req-un [::ns ::name])))
|
93 | 98 |
|
94 |
| -(defmethod node :js-array [_] |
95 |
| - (s/merge ::base |
96 |
| - (s/keys |
97 |
| - :req-un [::items]))) |
98 |
| - |
99 | 99 | (s/def ::var ::node)
|
100 | 100 | (s/def ::sym ::node)
|
101 | 101 | (s/def ::meta map?)
|
|
200 | 200 | (s/keys
|
201 | 201 | :req-un [::fn ::args])))
|
202 | 202 |
|
| 203 | +(s/def ::bindings (s/* ::node)) |
| 204 | + |
| 205 | +(defmethod node :let [_] |
| 206 | + (s/merge ::base |
| 207 | + (s/keys |
| 208 | + :req-un [::bindings ::body]))) |
| 209 | + |
| 210 | +(defmethod node :letfn [_] |
| 211 | + (s/merge ::base |
| 212 | + (s/keys |
| 213 | + :req-un [::bindings ::body]))) |
| 214 | + |
| 215 | +(defmethod node :local [_] |
| 216 | + (s/merge ::base |
| 217 | + (s/keys |
| 218 | + :req-un [:cljs.analyzer.specs.binding/local ::name]))) |
| 219 | + |
| 220 | +(defmethod node :loop [_] |
| 221 | + (s/merge ::base |
| 222 | + (s/keys |
| 223 | + :req-un [::bindings ::body]))) |
| 224 | + |
| 225 | +(s/def ::class ::node) |
| 226 | + |
| 227 | +(defmethod node :new [_] |
| 228 | + (s/merge ::base |
| 229 | + (s/keys |
| 230 | + :req-un [::class ::args]))) |
| 231 | + |
| 232 | +(defmethod node :no-op [_] |
| 233 | + ::base) |
| 234 | + |
| 235 | +(defmethod node :no-op [_] |
| 236 | + ::base) |
| 237 | + |
| 238 | +(defmethod node :no-op [_] |
| 239 | + ::base) |
| 240 | + |
| 241 | +(s/def ::expr ::node) |
| 242 | + |
| 243 | +(defmethod node :quote [_] |
| 244 | + (s/merge ::base |
| 245 | + (s/keys |
| 246 | + :req-un [::expr ::literal?]))) |
| 247 | + |
| 248 | +(s/def ::exprs (s/* ::nodes)) |
| 249 | + |
| 250 | +(defmethod node :recur [_] |
| 251 | + (s/merge ::base |
| 252 | + (s/keys |
| 253 | + :req-un [::exprs]))) |
| 254 | + |
| 255 | +(defmethod node :set [_] |
| 256 | + (s/merge ::base |
| 257 | + (s/keys |
| 258 | + :req-un [::items]))) |
| 259 | + |
| 260 | +(defmethod node :set! [_] |
| 261 | + (s/merge ::base |
| 262 | + (s/keys |
| 263 | + :req-un [::target ::val]))) |
| 264 | + |
| 265 | +(s/def ::exception ::node) |
| 266 | + |
| 267 | +(defmethod node :throw [_] |
| 268 | + (s/merge ::base |
| 269 | + (s/keys |
| 270 | + :req-un [::exception]))) |
| 271 | + |
| 272 | +(s/def ::catch ::node) |
| 273 | +(s/def ::finally ::node) |
| 274 | + |
| 275 | +(defmethod node :try [_] |
| 276 | + (s/merge ::base |
| 277 | + (s/keys |
| 278 | + :req-un [::body ::catch ::name ::finally]))) |
| 279 | + |
| 280 | +(defmethod node :var [_] |
| 281 | + (s/merge ::base |
| 282 | + (s/keys |
| 283 | + :req-un [::ns ::name]))) |
| 284 | + |
| 285 | +(s/def ::meta ::node) |
| 286 | + |
| 287 | +(defmethod node :with-meta [_] |
| 288 | + (s/merge ::base |
| 289 | + (s/keys |
| 290 | + :req-un [::meta ::expr]))) |
| 291 | + |
203 | 292 | (comment
|
204 | 293 |
|
205 | 294 | (s/valid? ::node 1)
|
|
0 commit comments