|
590 | 590 | (cb {:value ast}))))
|
591 | 591 |
|
592 | 592 | (defn- node-side-effects
|
593 |
| - [bound-vars sb deps ns-name] |
| 593 | + [bound-vars sb deps ns-name emit-nil-result?] |
594 | 594 | (doseq [dep deps]
|
595 | 595 | (.append sb
|
596 | 596 | (with-out-str
|
597 | 597 | (comp/emitln (munge ns-name) "."
|
598 | 598 | (ana/munge-node-lib dep)
|
599 |
| - " = require('" dep "');"))))) |
| 599 | + " = require('" dep "');")))) |
| 600 | + (when (and (seq deps) emit-nil-result?) |
| 601 | + (.append sb "null;"))) |
600 | 602 |
|
601 | 603 | (defn- global-exports-side-effects
|
602 |
| - [bound-vars sb deps ns-name] |
| 604 | + [bound-vars sb deps ns-name emit-nil-result?] |
603 | 605 | (let [{:keys [js-dependency-index]} @(:*compiler* bound-vars)]
|
604 | 606 | (doseq [dep deps]
|
605 | 607 | (let [{:keys [global-exports]} (get js-dependency-index (name dep))]
|
606 | 608 | (.append sb
|
607 | 609 | (with-out-str
|
608 | 610 | (comp/emitln (munge ns-name) "."
|
609 | 611 | (ana/munge-global-export dep)
|
610 |
| - " = goog.global." (get global-exports (symbol dep)) ";"))))))) |
| 612 | + " = goog.global." (get global-exports (symbol dep)) ";"))))) |
| 613 | + (when (and (seq deps) emit-nil-result?) |
| 614 | + (.append sb "null;")))) |
611 | 615 |
|
612 | 616 | (defn- analyze-str* [bound-vars source name opts cb]
|
613 | 617 | (let [rdr (rt/indexing-push-back-reader source 1 name)
|
|
767 | 771 | (.append sb
|
768 | 772 | (with-out-str (comp/emitln (str "goog.provide(\"" (comp/munge ns-name) "\");"))))
|
769 | 773 | (when-not (nil? node-deps)
|
770 |
| - (node-side-effects bound-vars sb node-deps ns-name)) |
| 774 | + (node-side-effects bound-vars sb node-deps ns-name (:def-emits-var opts))) |
771 | 775 | (global-exports-side-effects bound-vars sb
|
772 | 776 | (filter ana/dep-has-global-exports? (:deps ast))
|
773 |
| - ns-name) |
| 777 | + ns-name |
| 778 | + (:def-emits-var opts)) |
774 | 779 | (cb {:value (*eval-fn* {:source (.toString sb)})})))))
|
775 | 780 | (let [src (with-out-str (comp/emit ast))]
|
776 | 781 | (cb {:value (*eval-fn* {:source src})})))))))))
|
|
885 | 890 | (cb res)
|
886 | 891 | (let [ns-name (:name ast)]
|
887 | 892 | (when-not (nil? node-deps)
|
888 |
| - (node-side-effects bound-vars sb node-deps ns-name)) |
889 |
| - (global-exports-side-effects bound-vars sb |
890 |
| - (filter ana/dep-has-global-exports? (:deps ast)) |
891 |
| - ns-name) |
| 893 | + (node-side-effects bound-vars sb node-deps ns-name (:def-emits-var opts))) |
892 | 894 | (compile-loop (:name ast))))))
|
893 | 895 | (recur ns)))))
|
894 | 896 | (do
|
|
1021 | 1023 | (cb res)
|
1022 | 1024 | (let [ns-name (:name ast)]
|
1023 | 1025 | (when-not (nil? node-deps)
|
1024 |
| - (node-side-effects bound-vars sb node-deps ns-name)) |
| 1026 | + (node-side-effects bound-vars sb node-deps ns-name (:def-emits-var opts))) |
1025 | 1027 | (global-exports-side-effects bound-vars sb
|
1026 | 1028 | (filter ana/dep-has-global-exports? (:deps ast))
|
1027 |
| - ns-name) |
| 1029 | + ns-name |
| 1030 | + (:def-emits-var opts)) |
1028 | 1031 | (compile-loop ns'))))))
|
1029 | 1032 | (do
|
1030 | 1033 | (.append sb (with-out-str (comp/emit ast)))
|
|
0 commit comments