|
36 | 36 | [java.util.regex Pattern] |
37 | 37 | [java.net URL] |
38 | 38 | [java.lang Throwable] |
39 | | - [java.security MessageDigest] |
40 | | - [javax.xml.bind DatatypeConverter] |
41 | 39 | [clojure.lang Namespace Var LazySeq ArityException] |
42 | 40 | [cljs.tagged_literals JSValue]))) |
43 | 41 |
|
|
3144 | 3142 |
|
3145 | 3143 | #?(:clj |
3146 | 3144 | (defn gen-user-ns [src] |
3147 | | - (let [name (str src) |
3148 | | - name (.substring name (inc (.lastIndexOf name "/")) (.lastIndexOf name ".")) |
3149 | | - digest (MessageDigest/getInstance "SHA-1")] |
3150 | | - (.reset digest) |
3151 | | - (.update digest (.getBytes ^String name "utf8")) |
| 3145 | + (let [full-name (str src) |
| 3146 | + name (.substring full-name |
| 3147 | + (inc (.lastIndexOf full-name "/")) |
| 3148 | + (.lastIndexOf full-name "."))] |
3152 | 3149 | (symbol |
3153 | | - (str |
3154 | | - "cljs.user$$gen_ns$$_" name |
3155 | | - (->> (DatatypeConverter/printHexBinary (.digest digest)) |
3156 | | - (take 7) |
3157 | | - (apply str))))))) |
| 3150 | + (apply str |
| 3151 | + "cljs.user." name |
| 3152 | + (take 7 (util/content-sha full-name))))))) |
3158 | 3153 |
|
3159 | 3154 | #?(:clj |
3160 | 3155 | (defn parse-ns |
|
3198 | 3193 | (forms-seq* rdr (source-path src)) |
3199 | 3194 | src) |
3200 | 3195 | ret (merge |
3201 | | - {:ns (gen-user-ns src) |
3202 | | - :provides [(gen-user-ns src)] |
3203 | | - :file dest |
| 3196 | + {:file dest |
3204 | 3197 | :source-file (when rdr src) |
3205 | 3198 | :source-forms (when-not rdr src) |
3206 | 3199 | :macros-ns (:macros-ns opts) |
|
3242 | 3235 | (= :ns* (:op ast)) |
3243 | 3236 | (let [deps (merge (:uses ast) (:requires ast))] |
3244 | 3237 | (recur (rest forms) |
3245 | | - (update-in ret [:requires] into (set (vals deps))))) |
| 3238 | + (cond-> (update-in ret [:requires] into (set (vals deps))) |
| 3239 | + ;; we need to defer generating the user namespace |
| 3240 | + ;; until we actually need or it will break when |
| 3241 | + ;; `src` is a sequence of forms - António Monteiro |
| 3242 | + (not (:ns ret)) |
| 3243 | + (assoc :ns (gen-user-ns src) :provides [(gen-user-ns src)])))) |
3246 | 3244 |
|
3247 | 3245 | :else ret)) |
3248 | 3246 | ret)) |
|
0 commit comments