|
423 | 423 | (fn [resource] |
424 | 424 | (assert (or (map? resource) (nil? resource)) |
425 | 425 | "*load-fn* may only return a map or nil") |
426 | | - (if resource |
| 426 | + (if-not resource |
| 427 | + (if-let [cljs-dep (let [cljs-ns (ana/clj-ns->cljs-ns dep)] |
| 428 | + (get {dep nil} cljs-ns cljs-ns))] |
| 429 | + (do |
| 430 | + (patch-alias-map (:*compiler* bound-vars) lib dep cljs-dep) |
| 431 | + (analyze-deps bound-vars ana-env lib (cons cljs-dep (next deps)) opts |
| 432 | + (fn [res] |
| 433 | + (if (:error res) |
| 434 | + (cb res) |
| 435 | + (cb (update res :aliased-loads assoc dep cljs-dep)))))) |
| 436 | + (cb (wrap-error |
| 437 | + (ana/error ana-env |
| 438 | + (ana/error-message :undeclared-ns |
| 439 | + {:ns-sym dep :js-provide (name dep)}))))) |
427 | 440 | (let [{:keys [name lang source file]} resource] |
428 | 441 | (condp = lang |
429 | 442 | :clj (do |
|
437 | 450 | :js (analyze-deps bound-vars ana-env lib (next deps) opts cb) |
438 | 451 | (wrap-error |
439 | 452 | (ana/error ana-env |
440 | | - (str "Invalid :lang specified " lang ", only :clj or :js allowed"))))) |
441 | | - (cb (wrap-error |
442 | | - (ana/error ana-env |
443 | | - (ana/error-message :undeclared-ns |
444 | | - {:ns-sym dep :js-provide (name dep)}))))))) |
| 453 | + (str "Invalid :lang specified " lang ", only :clj or :js allowed")))))))) |
445 | 454 | (catch :default cause |
446 | 455 | (cb (wrap-error |
447 | 456 | (ana/error ana-env |
|
494 | 503 | (if (some? to) |
495 | 504 | (assoc acc renamed (symbol (str to) (name qualified-sym))) |
496 | 505 | (merge acc entry)))) |
497 | | - {} m)))] |
| 506 | + {} m))) |
| 507 | + rewrite-deps (fn [deps] |
| 508 | + (into [] |
| 509 | + (map (fn [dep] |
| 510 | + (if-let [new-dep (get smap dep)] |
| 511 | + new-dep |
| 512 | + dep))) |
| 513 | + deps))] |
498 | 514 | (-> ast |
499 | 515 | (update uk #(walk/postwalk-replace smap %)) |
500 | 516 | (update rk #(merge smap (walk/postwalk-replace smap %))) |
501 | | - (update renk rewrite-renames))))) |
| 517 | + (update renk rewrite-renames) |
| 518 | + (update :deps rewrite-deps))))) |
502 | 519 |
|
503 | 520 | (defn- check-macro-autoload-inferring-missing |
504 | 521 | [{:keys [requires name] :as ast} cenv] |
|
583 | 600 |
|
584 | 601 | (and (not load) (:*analyze-deps* bound-vars) (seq (:deps ast))) |
585 | 602 | (analyze-deps bound-vars ana-env (:name ast) (:deps ast) (dissoc opts :macros-ns) |
586 | | - #(check-uses-and-load-macros % ast)) |
| 603 | + #(check-uses-and-load-macros % (rewrite-ns-ast ast (:aliased-loads %)))) |
587 | 604 |
|
588 | 605 | :else |
589 | 606 | (check-uses-and-load-macros {:value nil} ast))) |
|
882 | 899 | (let [{node-libs true libs-to-load false} (group-by ana/node-module-dep? (:deps ast))] |
883 | 900 | [node-libs (assoc ast :deps libs-to-load)]) |
884 | 901 | [nil ast])] |
885 | | - (.append sb (with-out-str (comp/emit ast))) |
886 | 902 | (if (#{:ns :ns*} (:op ast)) |
887 | 903 | (ns-side-effects bound-vars aenv ast opts |
888 | 904 | (fn [res] |
889 | 905 | (if (:error res) |
890 | 906 | (cb res) |
891 | 907 | (let [ns-name (:name ast)] |
| 908 | + (.append sb (with-out-str (comp/emit (:value res)))) |
892 | 909 | (when-not (nil? node-deps) |
893 | 910 | (node-side-effects bound-vars sb node-deps ns-name (:def-emits-var opts))) |
894 | 911 | (compile-loop (:name ast)))))) |
895 | | - (recur ns))))) |
| 912 | + (do |
| 913 | + (.append sb (with-out-str (comp/emit ast))) |
| 914 | + (recur ns)))))) |
896 | 915 | (do |
897 | 916 | (when (:source-map opts) |
898 | 917 | (append-source-map env/*compiler* |
|
0 commit comments