|
33 | 33 | (s/def ::init ::node) |
34 | 34 | (s/def ::shadow ::node) |
35 | 35 |
|
36 | | -(defmethod node ::binding [_] |
| 36 | +(defmethod node :binding [_] |
37 | 37 | (s/merge |
38 | 38 | ::base |
39 | 39 | (s/keys |
|
84 | 84 | (s/keys |
85 | 85 | :req-un [::keys ::vals]))) |
86 | 86 |
|
| 87 | +(s/def ::ns symbol?) |
| 88 | + |
| 89 | +(defmethod node :js-var [_] |
| 90 | + (s/merge ::base |
| 91 | + (s/keys |
| 92 | + :req-un [::ns ::name]))) |
| 93 | + |
87 | 94 | (defmethod node :js-array [_] |
88 | 95 | (s/merge ::base |
89 | 96 | (s/keys |
|
101 | 108 | (s/def ::nodes (s/* ::node)) |
102 | 109 | (s/def ::default ::node) |
103 | 110 |
|
104 | | -(defmethod node ::case [_] |
| 111 | +(defmethod node :case [_] |
105 | 112 | (s/merge ::base |
106 | 113 | (s/keys |
107 | 114 | :req-un [::test ::nodes ::default]))) |
108 | 115 |
|
109 | | -(defmethod node ::case-node [_] |
| 116 | +(defmethod node :case-node [_] |
110 | 117 | (s/merge ::base |
111 | 118 | (s/keys |
112 | 119 | :req-un [::tests ::then]))) |
113 | 120 |
|
114 | | -(defmethod node ::case-test [_] |
| 121 | +(defmethod node :case-test [_] |
115 | 122 | (s/merge ::base |
116 | 123 | (s/keys |
117 | 124 | :req-un [::test]))) |
118 | 125 |
|
119 | | -(defmethod node ::case-then [_] |
| 126 | +(defmethod node :case-then [_] |
120 | 127 | (s/merge ::base |
121 | 128 | (s/keys |
122 | 129 | :req-un [::then]))) |
123 | 130 |
|
124 | 131 | (s/def ::the-var ::node) |
125 | 132 |
|
126 | | -(defmethod node ::def [_] |
| 133 | +(defmethod node :def [_] |
127 | 134 | (s/merge ::base |
128 | 135 | (s/keys |
129 | 136 | :req-un [::name] |
|
132 | 139 | (s/def ::body ::node) |
133 | 140 | (s/def ::t symbol?) |
134 | 141 |
|
135 | | -(defmethod node ::defrecord [_] |
| 142 | +(defmethod node :defrecord [_] |
136 | 143 | (s/merge ::base |
137 | 144 | (s/keys |
138 | 145 | :req-un [::t ::body]))) |
139 | 146 |
|
140 | | -(defmethod node ::deftype [_] |
| 147 | +(defmethod node :deftype [_] |
141 | 148 | (s/merge ::base |
142 | 149 | (s/keys |
143 | 150 | :req-un [::t ::body]))) |
|
146 | 153 | (s/def ::ret ::node) |
147 | 154 | (s/def ::body? boolean?) |
148 | 155 |
|
149 | | -(defmethod node ::do [_] |
| 156 | +(defmethod node :do [_] |
150 | 157 | (s/merge ::base |
151 | 158 | (s/keys |
152 | 159 | :req-un [::statements ::ret] |
|
156 | 163 | (s/def ::max-fixed-arity int?) |
157 | 164 | (s/def ::methods (s/+ ::node)) |
158 | 165 |
|
159 | | -(defmethod node ::fn [_] |
| 166 | +(defmethod node :fn [_] |
160 | 167 | (s/merge ::base |
161 | 168 | (s/keys |
162 | 169 | :req-un [::variadic? ::max-fixed-arity ::methods] |
|
165 | 172 | (s/def ::fixed-arity int?) |
166 | 173 | (s/def ::params (s/* ::node)) |
167 | 174 |
|
168 | | -(defmethod node ::fn-method [_] |
| 175 | +(defmethod node :fn-method [_] |
169 | 176 | (s/merge ::base |
170 | 177 | (s/keys |
171 | 178 | :req-un [::fixed-arity ::params ::body]))) |
172 | 179 |
|
| 180 | +(s/def ::method symbol?) |
| 181 | +(s/def ::target ::node) |
| 182 | +(s/def ::args (s/* ::node)) |
| 183 | + |
| 184 | +(defmethod node :host-call [_] |
| 185 | + (s/merge ::base |
| 186 | + (s/keys |
| 187 | + :req-un [::method ::target ::args]))) |
| 188 | + |
| 189 | +(s/def ::field symbol?) |
| 190 | + |
| 191 | +(defmethod node :host-field [_] |
| 192 | + (s/merge ::base |
| 193 | + (s/keys |
| 194 | + :req-un [::field ::target]))) |
| 195 | + |
| 196 | +(s/def ::fn ::node) |
| 197 | + |
| 198 | +(defmethod node :invoke [_] |
| 199 | + (s/merge ::base |
| 200 | + (s/keys |
| 201 | + :req-un [::fn ::args]))) |
| 202 | + |
173 | 203 | (comment |
174 | 204 |
|
175 | 205 | (s/valid? ::node 1) |
|
0 commit comments