|
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