|
43 | 43 | (defn emit-return [s env] |
44 | 44 | (if (= :return (:context env)) |
45 | 45 | (let [top-level (:top-level env)] |
46 | | - (format "return%s %s" |
| 46 | + (format "return%s %s%s" |
47 | 47 | (if top-level "!!" "") |
48 | | - s)) |
| 48 | + s |
| 49 | + (if top-level "!!semicolon-return" ";\n"))) |
49 | 50 | s)) |
50 | 51 |
|
51 | 52 | (defrecord Code [js bool] |
|
485 | 486 | (defn emit-var [[name ?doc ?expr :as expr] _skip-var? env] |
486 | 487 | (let [expr (if (= 3 (count expr)) |
487 | 488 | ?expr ?doc) |
488 | | - env (no-top-level env)] |
489 | | - (str (str "var " (munge name)) " = " |
490 | | - (emit expr (expr-env env)) ";\n" |
| 489 | + env* (no-top-level env)] |
| 490 | + (str "var " (munge name) " = " |
| 491 | + (emit expr (expr-env env*)) ";\n" |
491 | 492 | (when *repl* |
492 | | - (str "globalThis." |
493 | | - (when *cljs-ns* |
494 | | - (str (munge *cljs-ns*) ".") #_"var ") |
495 | | - (munge name) " = " (munge name) ";\n"))))) |
| 493 | + (emit-return (str "globalThis." |
| 494 | + (when *cljs-ns* |
| 495 | + (str (munge *cljs-ns*) ".")) |
| 496 | + (munge name) " = " (munge name) |
| 497 | + (when (= :statement (:context env)) ";\n")) |
| 498 | + env))))) |
496 | 499 |
|
497 | 500 | (defmethod emit-special 'def [_type env [_const & more :as expr]] |
498 | 501 | (let [name (first more)] |
|
506 | 509 | (emit-var more skip-var? env)))) |
507 | 510 |
|
508 | 511 | (defn js-await [env more] |
509 | | - (emit-return (wrap-await (emit more (expr-env env)) env) env)) |
| 512 | + (emit-return |
| 513 | + (wrap-await (emit more (expr-env env)) env) |
| 514 | + env)) |
510 | 515 |
|
511 | 516 | (defmethod emit-special 'js/await [_ env [_await more]] |
512 | 517 | (js-await env more)) |
|
0 commit comments