Merge loops/js into architecture: var hoisting + ASI + matchAll on top of regex engine / TDZ scaffolding

Combined arch's regex platform dispatch (runtime.sx) with loops/js's var-hoisting transpiler
(transpile.sx) and matchAll string method. Plan checkboxes updated to reflect both done.
Conflicts: lib/js/runtime.sx, lib/js/transpile.sx, lib/js/test.sh, plans/js-on-sx.md.
This commit is contained in:
2026-05-12 20:46:55 +00:00
10 changed files with 4653 additions and 732 deletions

View File

@@ -1486,6 +1486,24 @@ cat > "$TMPFILE" << 'EPOCHS'
(eval "(get (RegExp \"hello\" \"gi\") \"global\")")
(epoch 6032)
(eval "(get (RegExp \"foo\" \"i\") \"ignoreCase\")")
;; ── Phase 1.ASI: automatic semicolon insertion ─────────────────
(epoch 4200)
(eval "(js-eval \"function f() { return\n42\n} f()\")")
(epoch 4201)
(eval "(js-eval \"function g() { return 42 } g()\")")
(epoch 4202)
(eval "(let ((toks (js-tokenize \"a\nb\"))) (get (nth toks 1) :nl))")
(epoch 4203)
(eval "(let ((toks (js-tokenize \"a b\"))) (get (nth toks 1) :nl))")
(epoch 4300)
(eval "(js-eval \"var x = 5; x\")")
(epoch 4301)
(eval "(js-eval \"function f() { return x; var x = 42; } f()\")")
(epoch 4302)
(eval "(js-eval \"function f() { var y = 7; return y; } f()\")")
(epoch 4303)
(eval "(js-eval \"function f() { var z; z = 3; return z; } f()\")")
EPOCHS
@@ -2280,6 +2298,16 @@ check 6025 "set delete→size 0" '0'
check 6030 "RegExp? result" 'true'
check 6031 "RegExp global flag" 'true'
check 6032 "RegExp ignoreCase" 'true'
# ── Phase 1.ASI: automatic semicolon insertion ────────────────────
check 4200 "return+newline → undefined" '"js-undefined"'
check 4201 "return+space+val → val" '42'
check 4202 "nl-before flag set after newline" 'true'
check 4203 "nl-before flag false on same line" 'false'
check 4300 "var decl program-level" '5'
check 4301 "var hoisted before use → undef" '"js-undefined"'
check 4302 "var in function body" '7'
check 4303 "var then set in function" '3'
TOTAL=$((PASS + FAIL))
if [ $FAIL -eq 0 ]; then