Skip to content

Commit 17c79e7

Browse files
committed
* add basic :ns & :ns* specs
* test-letfn, test-ns, test-set! * some problematic ones
1 parent 6226322 commit 17c79e7

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

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

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
;; You must not remove this notice, or any other, from this software.
88

99
(ns cljs.analyzer.spec-tests
10-
(:require [cljs.analyzer.api :as ana :refer [no-warn]]
10+
(:require [cljs.analyzer :as ana]
11+
[cljs.analyzer.api :as ana-api :refer [no-warn]]
1112
[cljs.analyzer-tests :refer [analyze ns-env]]
1213
[cljs.analyzer.specs :as a]
1314
[clojure.test :as test :refer [deftest is]]
@@ -128,7 +129,10 @@
128129
(is (s/valid? ::a/node (analyze ns-env '(let [x 1]))))
129130
(is (s/valid? ::a/node (analyze ns-env '(let [x 1] x)))))
130131

131-
;; letfn
132+
(deftest test-letfn
133+
(let [node (analyze ns-env '(letfn [(foo [] (bar)) (bar [] (foo))]))]
134+
(is (= :letfn (:op node)))
135+
(is (s/valid? ::a/node node))))
132136

133137
;; list, no longer needed, subsumed by :quote
134138

@@ -165,9 +169,19 @@
165169

166170
;; no-op
167171

168-
;; ns
172+
(deftest test-ns
173+
(let [node (no-warn
174+
(binding [ana/*cljs-ns* 'cljs.user]
175+
(analyze ns-env '(ns foo (:require [goog.string])))))]
176+
(is (= :ns (:op node)))
177+
(is (s/valid? ::a/node node))))
169178

170-
;; ns*
179+
#_(deftest test-ns*
180+
(let [node (no-warn
181+
(binding [ana/*cljs-ns* 'cljs.user]
182+
(analyze ns-env '(ns* foo '(:require [goog.string])))))]
183+
(is (= :ns (:op node)))
184+
(is (s/valid? ::a/node node))))
171185

172186
(deftest test-quote
173187
(let [node (analyze ns-env ''(1 2 3))]
@@ -179,11 +193,14 @@
179193
(is (s/valid? ::a/node node))))
180194

181195
(deftest test-set
182-
(let [node (no-warn (analyze ns-env #{1 2 3}))]
196+
(let [node (analyze ns-env #{1 2 3})]
183197
(is (= :set (:op node)))
184198
(is (s/valid? ::a/node node))))
185199

186-
;; set!
200+
(deftest test-set!
201+
(let [node (no-warn (analyze ns-env '(set! x 1)))]
202+
(is (= :set! (:op node)))
203+
(is (s/valid? ::a/node node))))
187204

188205
;; the-var
189206

@@ -192,7 +209,10 @@
192209
(is (= :throw (:op node)))
193210
(is (s/valid? ::a/node node))))
194211

195-
;; try
212+
#_(deftest test-try
213+
(let [node (no-warn (analyze ns-env '(try 1 (catch :default e) (finally))))]
214+
(is (= :try (:op node)))
215+
(is (s/valid? ::a/node node))))
196216

197217
;; var
198218

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,9 +222,11 @@
222222
(defmethod node :no-op [_]
223223
::base)
224224

225-
;; :ns
225+
(defmethod node :ns [_]
226+
::base)
226227

227-
;; :ns*
228+
(defmethod node :ns* [_]
229+
::base)
228230

229231
(s/def ::expr ::node)
230232

0 commit comments

Comments
 (0)