|
4334 | 4334 | (.lastIndexOf full-name "."))]
|
4335 | 4335 | (symbol (str "cljs.user." name (util/content-sha full-name 7)))))))
|
4336 | 4336 |
|
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 |
| - |
4350 | 4337 | #?(:clj
|
4351 | 4338 | (defn ^:dynamic parse-ns
|
4352 | 4339 | "Helper for parsing only the essential namespace information from a
|
|
4372 | 4359 | (binding [env/*compiler* (if (false? (:restore opts))
|
4373 | 4360 | env/*compiler*
|
4374 | 4361 | (atom @env/*compiler*))
|
4375 |
| - *file-defs* nil |
4376 |
| - #?@(:clj [*unchecked-if* false |
4377 |
| - *unchecked-arrays* false]) |
4378 | 4362 | *cljs-ns* 'cljs.user
|
4379 | 4363 | *cljs-file* src
|
4380 | 4364 | *macro-infer*
|
|
4391 | 4375 | false)]
|
4392 | 4376 | (let [rdr (when-not (sequential? src) (io/reader src))]
|
4393 | 4377 | (try
|
4394 |
| - (loop [env (empty-env) |
4395 |
| - forms (if rdr |
| 4378 | + (loop [forms (if rdr |
4396 | 4379 | (forms-seq* rdr (source-path src))
|
4397 | 4380 | src)
|
4398 | 4381 | ret (merge
|
|
4407 | 4390 | {:lines (with-open [reader (io/reader dest)]
|
4408 | 4391 | (-> reader line-seq count))}))]
|
4409 | 4392 | (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))] |
4419 | 4395 | (cond
|
4420 | 4396 | (= :ns (:op ast))
|
4421 | 4397 | (let [ns-name (:name ast)
|
4422 | 4398 | ns-name (if (and (= 'cljs.core ns-name)
|
4423 | 4399 | (= "cljc" (util/ext src)))
|
4424 | 4400 | 'cljs.core$macros
|
4425 | 4401 | 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))}))) |
4447 | 4420 |
|
4448 | 4421 | (= :ns* (:op ast))
|
4449 | 4422 | (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)])))) |
4458 | 4430 |
|
4459 | 4431 | :else ret))
|
4460 | 4432 | ret))
|
|
0 commit comments