|
26 | 26 | (s/keys
|
27 | 27 | :req-un [::op ::env ::form]))
|
28 | 28 |
|
| 29 | +(s/def ::name symbol?) |
| 30 | +(s/def :cljs.analyzer.specs.binding/local |
| 31 | + #{:arg :catch :fn :let :letfn :loop :field}) |
| 32 | +(s/def ::variadic? boolean?) |
| 33 | +(s/def ::init ::node) |
| 34 | +(s/def ::shadow ::node) |
| 35 | + |
| 36 | +(defmethod node ::binding [_] |
| 37 | + (s/merge |
| 38 | + ::base |
| 39 | + (s/keys |
| 40 | + :req-un [::name :cljs.analyzer.specs.binding/local] |
| 41 | + :opt-un [::variadic? ::init ::shadow]))) |
| 42 | + |
29 | 43 | (defmethod node :if [_]
|
30 | 44 | (s/merge ::base
|
31 | 45 | (s/keys
|
|
97 | 111 | (s/keys
|
98 | 112 | :req-un [::tests ::then])))
|
99 | 113 |
|
| 114 | +(defmethod node ::case-test [_] |
| 115 | + (s/merge ::base |
| 116 | + (s/keys |
| 117 | + :req-un [::test]))) |
| 118 | + |
| 119 | +(defmethod node ::case-then [_] |
| 120 | + (s/merge ::base |
| 121 | + (s/keys |
| 122 | + :req-un [::then]))) |
| 123 | + |
| 124 | +(s/def ::the-var ::node) |
| 125 | + |
| 126 | +(defmethod node ::def [_] |
| 127 | + (s/merge ::base |
| 128 | + (s/keys |
| 129 | + :req-un [::name] |
| 130 | + :opt-un [::init ::the-var]))) |
| 131 | + |
| 132 | +(s/def ::body ::node) |
| 133 | +(s/def ::t symbol?) |
| 134 | + |
| 135 | +(defmethod node ::defrecord [_] |
| 136 | + (s/merge ::base |
| 137 | + (s/keys |
| 138 | + :req-un [::t ::body]))) |
| 139 | + |
| 140 | +(defmethod node ::deftype [_] |
| 141 | + (s/merge ::base |
| 142 | + (s/keys |
| 143 | + :req-un [::t ::body]))) |
| 144 | + |
| 145 | +(s/def ::statements ::node) |
| 146 | +(s/def ::ret ::node) |
| 147 | +(s/def ::body? boolean?) |
| 148 | + |
| 149 | +(defmethod node ::do [_] |
| 150 | + (s/merge ::base |
| 151 | + (s/keys |
| 152 | + :req-un [::statements ::ret] |
| 153 | + :opt-un [::body?]))) |
| 154 | + |
| 155 | +(s/def ::local ::node) |
| 156 | +(s/def ::max-fixed-arity int?) |
| 157 | +(s/def ::methods (s/+ ::node)) |
| 158 | + |
| 159 | +(defmethod node ::fn [_] |
| 160 | + (s/merge ::base |
| 161 | + (s/keys |
| 162 | + :req-un [::variadic? ::max-fixed-arity ::methods] |
| 163 | + :opt-un [::local]))) |
| 164 | + |
| 165 | +(s/def ::fixed-arity int?) |
| 166 | +(s/def ::params (s/* ::node)) |
| 167 | + |
| 168 | +(defmethod node ::fn-method [_] |
| 169 | + (s/merge ::base |
| 170 | + (s/keys |
| 171 | + :req-un [::fixed-arity ::params ::body]))) |
| 172 | + |
100 | 173 | (comment
|
101 | 174 |
|
102 | 175 | (s/valid? ::node 1)
|
|
0 commit comments