js-on-sx: js-new-call accepts list-typed constructor returns
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 1m1s

new Array(1,2,3) was returning an empty wrapper object because
js-new-call only honoured a non-undefined return when
(type-of ret) === "dict"; SX lists (representing JS arrays) were
silently discarded. Widened the check to accept "list" too.
Fixes new Array(1,2,3).length, String(new Array(1,2,3)), and any
constructor whose body returns a list. built-ins/String:
67/99 → 69/99 (canonical). conformance.sh: 148/148.
This commit is contained in:
2026-05-07 14:24:52 +00:00
parent c81e3f3705
commit 4e554113a9
4 changed files with 20 additions and 16 deletions

View File

@@ -624,7 +624,9 @@
(let
((ret (js-call-with-this obj ctor args)))
(if
(and (not (js-undefined? ret)) (= (type-of ret) "dict"))
(and
(not (js-undefined? ret))
(or (= (type-of ret) "dict") (= (type-of ret) "list")))
ret
obj))))))

View File

@@ -1,26 +1,26 @@
{
"totals": {
"pass": 67,
"fail": 26,
"pass": 69,
"fail": 24,
"skip": 1,
"timeout": 6,
"total": 100,
"runnable": 99,
"pass_rate": 67.7
"pass_rate": 69.7
},
"categories": [
{
"category": "built-ins/String",
"total": 100,
"pass": 67,
"fail": 26,
"pass": 69,
"fail": 24,
"skip": 1,
"timeout": 6,
"pass_rate": 67.7,
"pass_rate": 69.7,
"top_failures": [
[
"Test262Error (assertion failed)",
14
12
],
[
"TypeError: not a function",
@@ -44,7 +44,7 @@
"top_failure_modes": [
[
"Test262Error (assertion failed)",
14
12
],
[
"TypeError: not a function",
@@ -68,6 +68,6 @@
]
],
"pinned_commit": "d5e73fc8d2c663554fb72e2380a8c2bc1a318a33",
"elapsed_seconds": 364.7,
"elapsed_seconds": 344.4,
"workers": 1
}

View File

@@ -1,13 +1,13 @@
# test262 scoreboard
Pinned commit: `d5e73fc8d2c663554fb72e2380a8c2bc1a318a33`
Wall time: 364.7s
Wall time: 344.4s
**Total:** 67/99 runnable passed (67.7%). Raw: pass=67 fail=26 skip=1 timeout=6 total=100.
**Total:** 69/99 runnable passed (69.7%). Raw: pass=69 fail=24 skip=1 timeout=6 total=100.
## Top failure modes
- **14x** Test262Error (assertion failed)
- **12x** Test262Error (assertion failed)
- **8x** TypeError: not a function
- **6x** Timeout
- **2x** Unhandled: Not callable: \\\
@@ -18,13 +18,13 @@ Wall time: 364.7s
| Category | Pass | Fail | Skip | Timeout | Total | Pass % |
|---|---:|---:|---:|---:|---:|---:|
| built-ins/String | 67 | 26 | 1 | 6 | 100 | 67.7% |
| built-ins/String | 69 | 24 | 1 | 6 | 100 | 69.7% |
## Per-category top failures (min 10 runnable, worst first)
### built-ins/String (67/99 — 67.7%)
### built-ins/String (69/99 — 69.7%)
- **14x** Test262Error (assertion failed)
- **12x** Test262Error (assertion failed)
- **8x** TypeError: not a function
- **6x** Timeout
- **2x** Unhandled: Not callable: \\\