File tree Expand file tree Collapse file tree 3 files changed +26
-8
lines changed
cljs/cljs/analyzer/passes Expand file tree Collapse file tree 3 files changed +26
-8
lines changed Original file line number Diff line number Diff line change 6
6
; ; the terms of this license.
7
7
; ; You must not remove this notice, or any other, from this software.
8
8
9
- (ns cljs.analyzer.passes.lite )
9
+ (ns cljs.analyzer.passes.lite
10
+ (:refer-clojure :exclude [var?]))
10
11
11
12
(defn var? [ast]
12
13
(= :var (:op ast)))
13
14
14
- (def replace
15
+ (def ctor->simple-ctor
15
16
'{cljs.core/vector cljs.core/simple-vector
16
17
cljs.core/vec cljs.core/simple-vec})
17
18
18
19
(defn update-var [{:keys [name] :as ast}]
19
- (update-in ast :name ( get replace name) ))
20
+ (update ast :name ctor->simple-ctor ))
20
21
21
22
(defn replace-var? [ast]
22
23
(and (var? ast)
23
- (contains? replace (:name ast))))
24
+ (contains? ctor->simple-ctor (:name ast))))
24
25
25
26
(defn use-lite-types
26
27
[env ast _]
Original file line number Diff line number Diff line change 16
16
#? (:clj (:require [cljs.analyzer.impl :as impl]
17
17
[cljs.analyzer.impl.namespaces :as nses]
18
18
[cljs.analyzer.passes.and-or :as and-or]
19
+ [cljs.analyzer.passes.lite :as lite]
19
20
[cljs.env :as env :refer [ensure]]
20
21
[cljs.externs :as externs]
21
22
[cljs.js-deps :as deps]
30
31
:cljs (:require [cljs.analyzer.impl :as impl]
31
32
[cljs.analyzer.impl.namespaces :as nses]
32
33
[cljs.analyzer.passes.and-or :as and-or]
34
+ [cljs.analyzer.passes.lite :as lite]
33
35
[cljs.env :as env]
34
36
[cljs.reader :as edn]
35
37
[cljs.tagged-literals :as tags]
4455
4457
:cljs [infer-type and-or/optimize check-invoke-arg-types]))
4456
4458
4457
4459
(defn analyze* [env form name opts]
4458
- (let [passes *passes*
4459
- passes (if (nil? passes)
4460
- default-passes
4461
- passes)
4460
+ (let [passes (cond-> (or *passes* default-passes )
4461
+ (lite-mode? ) (conj lite/use-lite-types))
4462
4462
form (if (instance? LazySeq form)
4463
4463
(if (seq form) form ())
4464
4464
form)
Original file line number Diff line number Diff line change 178
178
(map (fn [x] x) s))))]))))]
179
179
(is (empty? (re-seq #"or_" code))))))
180
180
181
+ (deftest test-lite-mode-pass
182
+ (let [aenv (assoc (ana/empty-env ) :context :expr )
183
+ env (env/default-compiler-env {:lite-mode true })]
184
+ (is (= 'cljs.core/simple-vec
185
+ (-> (env/with-compiler-env env
186
+ (comp/with-core-cljs {}
187
+ (fn []
188
+ (analyze aenv 'cljs.core/vec))))
189
+ :name )))
190
+ (is (= 'cljs.core/simple-vector
191
+ (-> (env/with-compiler-env env
192
+ (comp/with-core-cljs {}
193
+ (fn []
194
+ (analyze aenv 'cljs.core/vector))))
195
+ :name )))))
196
+
181
197
(comment
182
198
(test/run-tests )
183
199
184
200
(require '[clojure.pprint :refer [pprint]])
201
+
185
202
)
You can’t perform that action at this time.
0 commit comments