Skip to content

Commit 598bf96

Browse files
committed
wip
1 parent 035625d commit 598bf96

2 files changed

Lines changed: 17 additions & 11 deletions

File tree

src/squint/compiler.cljc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,8 @@
341341
(let [s (str (subs s 0 return-idx)
342342
"return "
343343
(subs s (+ return-idx 9)))
344-
s (str/replace s "return!! " "")]
344+
s (str/replace s "return!! " "")
345+
s (str/replace s "!!semicolon-return" ";\n")]
345346
s)
346347
s))
347348

src/squint/compiler_common.cljc

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@
4343
(defn emit-return [s env]
4444
(if (= :return (:context env))
4545
(let [top-level (:top-level env)]
46-
(format "return%s %s"
46+
(format "return%s %s%s"
4747
(if top-level "!!" "")
48-
s))
48+
s
49+
(if top-level "!!semicolon-return" ";\n")))
4950
s))
5051

5152
(defrecord Code [js bool]
@@ -485,14 +486,16 @@
485486
(defn emit-var [[name ?doc ?expr :as expr] _skip-var? env]
486487
(let [expr (if (= 3 (count expr))
487488
?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"
491492
(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)))))
496499

497500
(defmethod emit-special 'def [_type env [_const & more :as expr]]
498501
(let [name (first more)]
@@ -506,7 +509,9 @@
506509
(emit-var more skip-var? env))))
507510

508511
(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))
510515

511516
(defmethod emit-special 'js/await [_ env [_await more]]
512517
(js-await env more))

0 commit comments

Comments
 (0)