Skip to content

Commit 23492ae

Browse files
committed
fix pass, add lite-mode tests
1 parent d9eb63e commit 23492ae

File tree

3 files changed

+26
-8
lines changed

3 files changed

+26
-8
lines changed

src/main/cljs/cljs/analyzer/passes/lite.cljc

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,22 @@
66
;; the terms of this license.
77
;; You must not remove this notice, or any other, from this software.
88

9-
(ns cljs.analyzer.passes.lite)
9+
(ns cljs.analyzer.passes.lite
10+
(:refer-clojure :exclude [var?]))
1011

1112
(defn var? [ast]
1213
(= :var (:op ast)))
1314

14-
(def replace
15+
(def ctor->simple-ctor
1516
'{cljs.core/vector cljs.core/simple-vector
1617
cljs.core/vec cljs.core/simple-vec})
1718

1819
(defn update-var [{:keys [name] :as ast}]
19-
(update-in ast :name (get replace name)))
20+
(update ast :name ctor->simple-ctor))
2021

2122
(defn replace-var? [ast]
2223
(and (var? ast)
23-
(contains? replace (:name ast))))
24+
(contains? ctor->simple-ctor (:name ast))))
2425

2526
(defn use-lite-types
2627
[env ast _]

src/main/clojure/cljs/analyzer.cljc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#?(:clj (:require [cljs.analyzer.impl :as impl]
1717
[cljs.analyzer.impl.namespaces :as nses]
1818
[cljs.analyzer.passes.and-or :as and-or]
19+
[cljs.analyzer.passes.lite :as lite]
1920
[cljs.env :as env :refer [ensure]]
2021
[cljs.externs :as externs]
2122
[cljs.js-deps :as deps]
@@ -30,6 +31,7 @@
3031
:cljs (:require [cljs.analyzer.impl :as impl]
3132
[cljs.analyzer.impl.namespaces :as nses]
3233
[cljs.analyzer.passes.and-or :as and-or]
34+
[cljs.analyzer.passes.lite :as lite]
3335
[cljs.env :as env]
3436
[cljs.reader :as edn]
3537
[cljs.tagged-literals :as tags]
@@ -4455,10 +4457,8 @@
44554457
:cljs [infer-type and-or/optimize check-invoke-arg-types]))
44564458

44574459
(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))
44624462
form (if (instance? LazySeq form)
44634463
(if (seq form) form ())
44644464
form)

src/test/clojure/cljs/analyzer_pass_tests.clj

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,25 @@
178178
(map (fn [x] x) s))))]))))]
179179
(is (empty? (re-seq #"or_" code))))))
180180

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+
181197
(comment
182198
(test/run-tests)
183199

184200
(require '[clojure.pprint :refer [pprint]])
201+
185202
)

0 commit comments

Comments
 (0)