Skip to content

Commit 6a353c3

Browse files
committed
* add missing :js spec
* basic tests for loop, recur, case
1 parent ac8b0de commit 6a353c3

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

src/test/clojure/cljs/analyzer/spec_tests.clj

+11-6
Original file line numberDiff line numberDiff line change
@@ -123,17 +123,25 @@
123123
(is (s/valid? ::a/node node)))
124124
(let [node (analyze ns-env '(loop [x 1] x))]
125125
(is (s/valid? ::a/node node)))
126-
#_(let [node (analyze ns-env '(loop [x 1] (recur (inc x))))]
126+
(let [node (analyze ns-env '(loop [x 1] (recur (inc x))))]
127127
(is (s/valid? ::a/node node)))
128-
#_(let [node (no-warn
128+
(let [node (no-warn
129129
(analyze ns-env
130130
'(loop [x 100]
131131
(if (pos? x)
132132
(recur (dec x))
133133
x))))]
134134
(is (s/valid? ::a/node node))))
135135

136-
;; leftfn
136+
(deftest test-recur
137+
(let [node (no-warn (analyze ns-env '(fn [x] (recur (inc x)))))]
138+
(is (s/valid? ::a/node node))))
139+
140+
(deftest test-case
141+
(let [node (no-warn (analyze ns-env '(case x 1 :foo 2 :bar)))]
142+
(is (s/valid? ::a/node node))))
143+
144+
;; letfn
137145

138146
;; local
139147

@@ -145,7 +153,4 @@
145153

146154
(test/run-tests)
147155

148-
(s/valid? ::a/node (no-warn (analyze ns-env '(case x 1 :foo 2 :bar))))
149-
(s/explain ::a/node (no-warn (analyze ns-env '(case x 1 :foo 2 :bar))))
150-
151156
)

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

+7
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,13 @@
286286
(s/keys
287287
:req-un [::meta ::expr])))
288288

289+
(s/def ::code string?)
290+
291+
(defmethod node :js [_]
292+
(s/merge ::base
293+
(s/keys
294+
:opt-un [::code])))
295+
289296
(comment
290297

291298
(s/valid? ::node 1)

0 commit comments

Comments
 (0)