js-on-sx: baseline commit (278/280 unit, 148/148 slice, runner stub)

Initial commit of the lib/js/ tree and plans/ directory. A previous
session left template-string work in progress — 278/280 unit tests pass
(2 failing: tpl part-count off-by-one, escaped-backtick ident lookup).
test262-runner.py and scoreboard are placeholders (0/8 with 7 timeouts);
fixing the runner is the next queue item.
This commit is contained in:
2026-04-23 19:42:16 +00:00
parent 14b6586e41
commit 9e568ad886
310 changed files with 7056 additions and 0 deletions

View File

@@ -0,0 +1 @@
bang

View File

@@ -0,0 +1,4 @@
var r = null;
new Promise((res, rej) => { throw "bang"; }).catch(e => { r = e; });
__drain();
r

View File

@@ -0,0 +1 @@
1:5

View File

@@ -0,0 +1,5 @@
var r = null;
var hit = 0;
Promise.resolve(5).finally(() => { hit = 1; }).then(v => { r = v; });
__drain();
"" + hit + ":" + r

View File

@@ -0,0 +1 @@
A,B,C,D

View File

@@ -0,0 +1,5 @@
var log = [];
Promise.resolve(0).then(() => { log.push("A"); }).then(() => { log.push("C"); });
Promise.resolve(0).then(() => { log.push("B"); }).then(() => { log.push("D"); });
__drain();
log.join(",")

View File

@@ -0,0 +1 @@
oops

View File

@@ -0,0 +1,4 @@
var r = null;
new Promise((resolve, reject) => { reject("oops"); }).catch(e => { r = e; });
__drain();
r

View File

@@ -0,0 +1 @@
42

View File

@@ -0,0 +1,4 @@
var r = null;
new Promise((resolve, reject) => { resolve(42); }).then(v => { r = v; });
__drain();
r

View File

@@ -0,0 +1 @@
6

View File

@@ -0,0 +1,5 @@
var r = null;
Promise.all([Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)])
.then(vs => { r = vs[0] + vs[1] + vs[2]; });
__drain();
r

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1,4 @@
var r = null;
Promise.all([]).then(vs => { r = vs.length; });
__drain();
r

View File

@@ -0,0 +1 @@
3

View File

@@ -0,0 +1,4 @@
var r = null;
Promise.all([1, 2, 3]).then(vs => { r = vs.length; });
__drain();
r

View File

@@ -0,0 +1 @@
x

View File

@@ -0,0 +1,5 @@
var r = null;
Promise.all([Promise.resolve(1), Promise.reject("x"), Promise.resolve(3)])
.catch(e => { r = e; });
__drain();
r

View File

@@ -0,0 +1 @@
first

View File

@@ -0,0 +1,5 @@
var r = null;
Promise.race([Promise.resolve("first"), Promise.resolve("second")])
.then(v => { r = v; });
__drain();
r

View File

@@ -0,0 +1,3 @@
var p1 = Promise.resolve(5);
var p2 = Promise.resolve(p1);
p1 === p2

View File

@@ -0,0 +1 @@
bad

View File

@@ -0,0 +1,4 @@
var msg = null;
Promise.reject("bad").catch(e => { msg = e; });
__drain();
msg

View File

@@ -0,0 +1 @@
77

View File

@@ -0,0 +1,5 @@
var r = null;
var inner = Promise.resolve(77);
new Promise((res, rej) => { res(inner); }).then(v => { r = v; });
__drain();
r

View File

@@ -0,0 +1 @@
8

View File

@@ -0,0 +1,4 @@
var r = null;
Promise.resolve(7).then(x => { r = x + 1; });
__drain();
r

View File

@@ -0,0 +1 @@
20

View File

@@ -0,0 +1,4 @@
var r = null;
Promise.resolve(1).then(x => x + 1).then(x => x * 10).then(x => { r = x; });
__drain();
r

View File

@@ -0,0 +1 @@
boom

View File

@@ -0,0 +1,6 @@
var r = null;
Promise.resolve(1)
.then(x => { throw "boom"; })
.catch(e => { r = e; });
__drain();
r