Skip to content

Commit 6087f8e

Browse files
committed
(wip)
1 parent 1f8da01 commit 6087f8e

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

src/test/clojure/cljs/analyzer/specs.cljc

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,20 @@
2626
(s/keys
2727
:req-un [::op ::env ::form]))
2828

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+
2943
(defmethod node :if [_]
3044
(s/merge ::base
3145
(s/keys
@@ -97,6 +111,65 @@
97111
(s/keys
98112
:req-un [::tests ::then])))
99113

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+
100173
(comment
101174

102175
(s/valid? ::node 1)

0 commit comments

Comments
 (0)