|
2694 | 2694 | (or (when (contains? opts :load-macros)
|
2695 | 2695 | (:load-macros opts))
|
2696 | 2696 | false)]
|
2697 |
| - (with-open [rdr (io/reader src)] |
2698 |
| - (loop [forms (forms-seq* rdr (source-path src))] |
2699 |
| - (if (seq forms) |
2700 |
| - (let [env (empty-env) |
2701 |
| - ast (no-warn (analyze env (first forms) nil opts))] |
2702 |
| - (if (= :ns (:op ast)) |
2703 |
| - (let [ns-name (:name ast) |
2704 |
| - ns-name (if (and (= 'cljs.core ns-name) |
2705 |
| - (= "cljc" (util/ext src))) |
2706 |
| - 'cljs.core$macros |
2707 |
| - ns-name) |
2708 |
| - deps (merge (:uses ast) (:requires ast))] |
2709 |
| - (.close ^Reader rdr) |
2710 |
| - [(merge |
2711 |
| - {:ns (or ns-name 'cljs.user) |
2712 |
| - :provides [ns-name] |
2713 |
| - :requires (if (= 'cljs.core ns-name) |
2714 |
| - (set (vals deps)) |
2715 |
| - (cond-> (conj (set (vals deps)) 'cljs.core) |
2716 |
| - (get-in compiler-env [:options :emit-constants]) |
2717 |
| - (conj 'constants-table))) |
2718 |
| - :file dest |
2719 |
| - :source-file src |
2720 |
| - :ast ast |
2721 |
| - :macros-ns (or (:macros-ns opts) |
2722 |
| - (= 'cljs.core$macros ns-name))} |
2723 |
| - (when (and dest (.exists ^File dest)) |
2724 |
| - {:lines (with-open [reader (io/reader dest)] |
2725 |
| - (-> reader line-seq count))})) |
2726 |
| - @env/*compiler*]) |
2727 |
| - (recur (rest forms)))) |
2728 |
| - (throw (AssertionError. (str "No ns form found in " src)))))))] |
| 2697 | + (let [rdr (when-not (sequential? src) (io/reader src))] |
| 2698 | + (try |
| 2699 | + (loop [forms (if rdr |
| 2700 | + (forms-seq* rdr (source-path src)) |
| 2701 | + src)] |
| 2702 | + (if (seq forms) |
| 2703 | + (let [env (empty-env) |
| 2704 | + ast (no-warn (analyze env (first forms) nil opts))] |
| 2705 | + (if (= :ns (:op ast)) |
| 2706 | + (let [ns-name (:name ast) |
| 2707 | + ns-name (if (and (= 'cljs.core ns-name) |
| 2708 | + (= "cljc" (util/ext src))) |
| 2709 | + 'cljs.core$macros |
| 2710 | + ns-name) |
| 2711 | + deps (merge (:uses ast) (:requires ast))] |
| 2712 | + [(merge |
| 2713 | + {:ns (or ns-name 'cljs.user) |
| 2714 | + :provides [ns-name] |
| 2715 | + :requires (if (= 'cljs.core ns-name) |
| 2716 | + (set (vals deps)) |
| 2717 | + (cond-> (conj (set (vals deps)) 'cljs.core) |
| 2718 | + (get-in compiler-env [:options :emit-constants]) |
| 2719 | + (conj 'constants-table))) |
| 2720 | + :file dest |
| 2721 | + :source-file (when rdr src) |
| 2722 | + :source-forms (when-not rdr src) |
| 2723 | + :ast ast |
| 2724 | + :macros-ns (or (:macros-ns opts) |
| 2725 | + (= 'cljs.core$macros ns-name))} |
| 2726 | + (when (and dest (.exists ^File dest)) |
| 2727 | + {:lines (with-open [reader (io/reader dest)] |
| 2728 | + (-> reader line-seq count))})) |
| 2729 | + @env/*compiler*]) |
| 2730 | + (recur (rest forms)))) |
| 2731 | + (throw (AssertionError. (str "No ns form found in " src))))) |
| 2732 | + (finally |
| 2733 | + (when rdr |
| 2734 | + (.close ^Reader rdr))))))] |
2729 | 2735 | (when (false? (:restore opts))
|
2730 | 2736 | (swap! env/*compiler*
|
2731 | 2737 | (fn [old-state]
|
|
0 commit comments