Skip to content

Commit 9c39d87

Browse files
authored
Revert CLJS-3276 (#99)
Revert CLJS-3276, fixes CLJS-3311 and CLJS-3312
1 parent 3e9d650 commit 9c39d87

File tree

5 files changed

+29
-71
lines changed

5 files changed

+29
-71
lines changed

src/main/clojure/cljs/analyzer.cljc

Lines changed: 28 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -4334,19 +4334,6 @@
43344334
(.lastIndexOf full-name "."))]
43354335
(symbol (str "cljs.user." name (util/content-sha full-name 7)))))))
43364336

4337-
#?(:clj
4338-
(defn macro-call? [form env]
4339-
(when (and (seq? form) (seq form) (and (symbol? (first form))))
4340-
(let [sym (first form)
4341-
nstr (namespace sym)]
4342-
(or (and (some? nstr)
4343-
(some? (gets env :ns :require-macros (symbol nstr))))
4344-
(some? (gets env :ns :rename-macros sym))
4345-
(some? (gets env :ns :use-macros sym)))))))
4346-
4347-
#?(:clj
4348-
(declare ns-side-effects macroexpand-1))
4349-
43504337
#?(:clj
43514338
(defn ^:dynamic parse-ns
43524339
"Helper for parsing only the essential namespace information from a
@@ -4372,9 +4359,6 @@
43724359
(binding [env/*compiler* (if (false? (:restore opts))
43734360
env/*compiler*
43744361
(atom @env/*compiler*))
4375-
*file-defs* nil
4376-
#?@(:clj [*unchecked-if* false
4377-
*unchecked-arrays* false])
43784362
*cljs-ns* 'cljs.user
43794363
*cljs-file* src
43804364
*macro-infer*
@@ -4391,8 +4375,7 @@
43914375
false)]
43924376
(let [rdr (when-not (sequential? src) (io/reader src))]
43934377
(try
4394-
(loop [env (empty-env)
4395-
forms (if rdr
4378+
(loop [forms (if rdr
43964379
(forms-seq* rdr (source-path src))
43974380
src)
43984381
ret (merge
@@ -4407,54 +4390,43 @@
44074390
{:lines (with-open [reader (io/reader dest)]
44084391
(-> reader line-seq count))}))]
44094392
(if (seq forms)
4410-
(let [form (first forms)
4411-
macro? (macro-call? form env)
4412-
env (if macro?
4413-
(binding [*load-macros* true]
4414-
(assoc (:env (ns-side-effects env (:ast ret) opts)) :ns (:ns env)))
4415-
env)
4416-
ast (when (or macro? (and (seq? form) ('#{ns ns* require use require-macros} (first form))))
4417-
(no-warn (analyze env form nil opts)))
4418-
env (assoc (:env ast) :ns (:ns env))]
4393+
(let [env (empty-env)
4394+
ast (no-warn (analyze env (first forms) nil opts))]
44194395
(cond
44204396
(= :ns (:op ast))
44214397
(let [ns-name (:name ast)
44224398
ns-name (if (and (= 'cljs.core ns-name)
44234399
(= "cljc" (util/ext src)))
44244400
'cljs.core$macros
44254401
ns-name)
4426-
deps (merge (:uses ast) (:requires ast))
4427-
env (assoc (:env ast) :ns (dissoc ast :env))]
4428-
(recur env
4429-
(rest forms)
4430-
(cond->
4431-
{:ns (or ns-name 'cljs.user)
4432-
:provides [ns-name]
4433-
:requires (if (= 'cljs.core ns-name)
4434-
(set (vals deps))
4435-
(cond-> (conj (set (vals deps)) 'cljs.core)
4436-
(get-in @env/*compiler* [:options :emit-constants])
4437-
(conj constants-ns-sym)))
4438-
:file dest
4439-
:source-file (when rdr src)
4440-
:source-forms (when-not rdr src)
4441-
:ast ast
4442-
:macros-ns (or (:macros-ns opts)
4443-
(= 'cljs.core$macros ns-name))}
4444-
(and dest (.exists ^File dest))
4445-
(assoc :lines (with-open [reader (io/reader dest)]
4446-
(-> reader line-seq count))))))
4402+
deps (merge (:uses ast) (:requires ast))]
4403+
(merge
4404+
{:ns (or ns-name 'cljs.user)
4405+
:provides [ns-name]
4406+
:requires (if (= 'cljs.core ns-name)
4407+
(set (vals deps))
4408+
(cond-> (conj (set (vals deps)) 'cljs.core)
4409+
(get-in @env/*compiler* [:options :emit-constants])
4410+
(conj constants-ns-sym)))
4411+
:file dest
4412+
:source-file (when rdr src)
4413+
:source-forms (when-not rdr src)
4414+
:ast ast
4415+
:macros-ns (or (:macros-ns opts)
4416+
(= 'cljs.core$macros ns-name))}
4417+
(when (and dest (.exists ^File dest))
4418+
{:lines (with-open [reader (io/reader dest)]
4419+
(-> reader line-seq count))})))
44474420

44484421
(= :ns* (:op ast))
44494422
(let [deps (merge (:uses ast) (:requires ast))]
4450-
(recur (:env ast)
4451-
(rest forms)
4452-
(cond-> (update-in ret [:requires] into (set (vals deps)))
4453-
;; we need to defer generating the user namespace
4454-
;; until we actually need or it will break when
4455-
;; `src` is a sequence of forms - António Monteiro
4456-
(not (:ns ret))
4457-
(assoc :ns (gen-user-ns src) :provides [(gen-user-ns src)]))))
4423+
(recur (rest forms)
4424+
(cond-> (update-in ret [:requires] into (set (vals deps)))
4425+
;; we need to defer generating the user namespace
4426+
;; until we actually need or it will break when
4427+
;; `src` is a sequence of forms - António Monteiro
4428+
(not (:ns ret))
4429+
(assoc :ns (gen-user-ns src) :provides [(gen-user-ns src)]))))
44584430

44594431
:else ret))
44604432
ret))

src/main/clojure/cljs/analyzer/api.cljc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@
166166
(env/with-compiler-env state
167167
(binding [ana/*cljs-warning-handlers* (:warning-handlers opts ana/*cljs-warning-handlers*)]
168168
(ana/parse-ns src dest opts))))))
169+
169170
#?(:clj
170171
(defn analyze-file
171172
"Given a java.io.File, java.net.URL or a string identifying a resource on the

src/test/cljs_build/cljs_3276/foo.cljs

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/test/cljs_build/cljs_3276/macros.clj

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/test/clojure/cljs/analyzer_tests.clj

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1492,13 +1492,3 @@
14921492
'[(ns test.foo
14931493
(:import goog))]))
14941494
(is (= {} (get-in @cenv [::ana/namespaces 'test.foo :imports])))))
1495-
1496-
(deftest test-cljs-3276-require-from-macro
1497-
(let [cenv (env/default-compiler-env)]
1498-
(env/with-compiler-env cenv
1499-
(ana/analyze-form-seq
1500-
'[(ns test.foo
1501-
(:require-macros [cljs-3276.macros :refer [macro-that-requires]]))
1502-
(macro-that-requires)]))
1503-
(is (= '{cljs-3276.foo cljs-3276.foo} (get-in @cenv [::ana/namespaces 'test.foo :requires])))
1504-
(is (contains? (get @cenv ::ana/namespaces) 'cljs-3276.foo))))

0 commit comments

Comments
 (0)