|
4 | 4 | (:require [clojure.java.io :as io] |
5 | 5 | [cljs.analyzer :as an] |
6 | 6 | [cljs.analyzer.api :as ana] |
| 7 | + [cljs.closure] |
| 8 | + [cljs.env] |
7 | 9 | [clojure.string :as str])) |
8 | 10 |
|
9 | 11 | (defn- cljs-filename? [filename] |
|
15 | 17 | (-> file .getName cljs-filename?))) |
16 | 18 |
|
17 | 19 | (defn- remove-quote [x] |
18 | | - (if (and (list? x) (= (first x) 'quote)) |
| 20 | + (if (and (seq? x) (= (first x) 'quote)) |
19 | 21 | (second x) |
20 | 22 | x)) |
21 | 23 |
|
|
50 | 52 | :else :var)) |
51 | 53 |
|
52 | 54 | (defn- read-var [file vars var] |
53 | | - (-> var |
54 | | - (select-keys [:name :line :arglists :doc :dynamic :added :deprecated :doc/format]) |
55 | | - (update-some :name (comp symbol name)) |
56 | | - (update-some :arglists remove-quote) |
57 | | - (update-some :doc correct-indent) |
58 | | - (assoc-some :file (.getPath file) |
59 | | - :type (var-type var) |
60 | | - :members (map (partial read-var file vars) |
61 | | - (protocol-methods var vars))))) |
| 55 | + (let [vt (var-type var)] |
| 56 | + (-> var |
| 57 | + (select-keys [:name :line :arglists :doc :dynamic :added :deprecated :doc/format]) |
| 58 | + (update-some :name (comp symbol name)) |
| 59 | + (update-some :arglists remove-quote) |
| 60 | + (update-some :doc correct-indent) |
| 61 | + (assoc-some :file (if (= vt :macro) (:file var) (.getPath file)) |
| 62 | + :type vt |
| 63 | + :members (map (partial read-var file vars) |
| 64 | + (protocol-methods var vars)))))) |
62 | 65 |
|
63 | 66 | (defn- read-publics [state namespace file] |
64 | 67 | (let [vars (vals (ana/ns-publics state namespace))] |
|
70 | 73 | (sort-by (comp str/lower-case :name))))) |
71 | 74 |
|
72 | 75 | (defn- analyze-file [file] |
73 | | - (let [state (ana/empty-state)] |
74 | | - (binding [an/*analyze-deps* false] |
75 | | - (ana/no-warn |
76 | | - (ana/analyze-file state file {}))) |
| 76 | + (let [opts (cljs.closure/add-implicit-options {}) |
| 77 | + state (cljs.env/default-compiler-env opts)] |
| 78 | + (ana/no-warn |
| 79 | + (cljs.closure/validate-opts opts) |
| 80 | + (ana/analyze-file state file opts)) |
77 | 81 | state)) |
78 | 82 |
|
79 | 83 | (defn- read-file [path file exception-handler] |
|
0 commit comments