Skip to content

Commit 465c88e

Browse files
committed
revert 3276, fix tests to show that there was way for this to work previously
1 parent 3e9d650 commit 465c88e

File tree

2 files changed

+31
-58
lines changed

2 files changed

+31
-58
lines changed

src/main/clojure/cljs/analyzer.cljc

Lines changed: 29 additions & 57 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)
4423-
(= "cljc" (util/ext src)))
4399+
(= "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))
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
(ns cljs-3276.macros)
22

33
(defmacro macro-that-requires []
4-
`(require 'cljs-3276.foo))
4+
'(ns test.foo
5+
(:require cljs-3276.foo)))

0 commit comments

Comments
 (0)