Repository navigation
test262 eval-code annexB+language — 45 (self-contained worklist) #5841
Description
Self-contained worklist — 45 failing. Snapshot 2026-07-01 full sweep (perry 0.5.1209, node v26.3.0). Everything you need is in this issue; no history to read, no re-measure to start.
Annex B.3.3 global-eval declaration hoisting. NOTE a live regression: global-eval decls publish with the WRONG property descriptor (must be configurable per CreateGlobalVar/FunctionBinding) — f/x descriptor should be. Some dynamic-string eval is a genuine AOT limit (document those). Crate: perry-hir (lower/global_eval_hoist.rs, lower/const_fold_fn.rs).
Setup (any box)
git clone https://github.com/PerryTS/perry && cd perry
cargo build --release -p perry -p perry-runtime-static -p perry-stdlib-static
git clone --depth 1 https://github.com/tc39/test262 vendor/test262 # checkout test-compat/test262/pinned-sha.txt
# node on PATH (differential oracle). See test-compat/test262/README.md.Measure/verify: scripts/test262_subset.py --root vendor/test262 --dir annexB/language/eval-code language/eval-code --jobs 8 (the .failures.txt sidecar lists failures; diff before/after for zero-regression).
Failure reasons
| n | reason |
|---|---|
| 16 | Uncaught exception: f descriptor should be configurable |
| 7 | Uncaught exception: Expected a ReferenceError to be thr |
| 4 | Uncaught exception: indirect eval |
| 2 | Uncaught exception: x descriptor value should be 45; x |
| 2 | Uncaught exception: x descriptor should be configurable |
| 1 | SyntaxError: Identifier 'err' has already been declared |
| 1 | Uncaught exception: Expected SameValue(«function () { [ |
| 1 | Uncaught exception: Expected SameValue(«"local"», «"par |
| 1 | Uncaught exception: Expected SameValue(«"function"», «" |
| 1 | Uncaught exception: Expected true but got false |
| 1 | TypeError: Cannot convert undefined or null to object |
| 1 | Uncaught exception: binding may be deleted Expected a R |
All 45 failing cases (path — reason)
annexB/language/eval-code/direct/global-block-decl-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/direct/global-switch-case-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/direct/global-switch-dflt-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/direct/var-env-lower-lex-catch-non-strict.js SyntaxError: Identifier 'err' has already been declared
annexB/language/eval-code/indirect/global-block-decl-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/indirect/global-switch-case-eval-global-init.js Uncaught exception: f descriptor should be configurable
annexB/language/eval-code/indirect/global-switch-dflt-eval-global-init.js Uncaught exception: f descriptor should be configurable
language/eval-code/direct/arrow-fn-body-cntns-arguments-func-decl-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js Uncaught exception: Expected SameValue(«function () { [native code] }», «"param"
language/eval-code/direct/arrow-fn-body-cntns-arguments-var-bind-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js Uncaught exception: Expected SameValue(«"local"», «"param"») to be true
language/eval-code/direct/lex-env-distinct-cls.js Uncaught exception: Expected SameValue(«"function"», «"undefined"») to be true
language/eval-code/direct/lex-env-no-init-cls.js Uncaught exception: Expected a ReferenceError to be thrown but no exception was
language/eval-code/direct/lex-env-no-init-const.js Uncaught exception: Expected a ReferenceError to be thrown but no exception was
language/eval-code/direct/lex-env-no-init-let.js Uncaught exception: Expected a ReferenceError to be thrown but no exception was
language/eval-code/direct/non-definable-global-var.js Uncaught exception: Expected true but got false
language/eval-code/direct/super-prop-method.js TypeError: Cannot convert undefined or null to object
language/eval-code/direct/var-env-func-init-local-new-delete.js Uncaught exception: binding may be deleted Expected a ReferenceError to be throw
language/eval-code/direct/var-env-func-non-strict.js Uncaught exception: Expected SameValue(«"undefined"», «"function"») to be true
language/eval-code/direct/var-env-var-init-global-exstng.js Uncaught exception: x descriptor value should be 45; x value should be 45
language/eval-code/direct/var-env-var-init-global-new.js Uncaught exception: x descriptor should be configurable
language/eval-code/direct/var-env-var-init-local-exstng.js Uncaught exception: Expected SameValue(«undefined», «44443») to be true
language/eval-code/direct/var-env-var-init-local-new-delete.js Uncaught exception: Expected a ReferenceError to be thrown but no exception was
language/eval-code/indirect/always-non-strict.js SyntaxError: Function constructor: invalid function body
language/eval-code/indirect/global-env-rec-catch.js Uncaught exception: indirect eval
language/eval-code/indirect/global-env-rec-eval.js Uncaught exception: Expected true but got undefined
language/eval-code/indirect/global-env-rec-fun.js Uncaught exception: indirect eval
language/eval-code/indirect/global-env-rec-with.js Uncaught exception: indirect eval
language/eval-code/indirect/global-env-rec.js Uncaught exception: indirect eval
language/eval-code/indirect/lex-env-heritage.js Uncaught exception: non strict mode Expected SameValue(«"inside"», «"outside"»)
language/eval-code/indirect/lex-env-no-init-cls.js Uncaught exception: Expected a ReferenceError to be thrown but no exception was
language/eval-code/indirect/lex-env-no-init-const.js Uncaught exception: Expected a ReferenceError to be thrown but no exception was
language/eval-code/indirect/lex-env-no-init-let.js Uncaught exception: Expected a ReferenceError to be thrown but no exception was
language/eval-code/indirect/var-env-global-lex-non-strict.js Uncaught exception: Expected SameValue(«undefined», «undefined») to be false
language/eval-code/indirect/var-env-var-init-global-exstng.js Uncaught exception: x descriptor value should be 45; x value should be 45
language/eval-code/indirect/var-env-var-init-global-new.js Uncaught exception: x descriptor should be configurable
language/eval-code/indirect/var-env-var-non-strict.js ReferenceError: x is not defined
Workflow
Pick a coherent single-root subcluster, localize (cargo run --release -- f.ts --trace hir --focus <fn> / --trace llvm), fix, verify listed cases pass AND re-run the slice for zero regressions. Code-only PR (no Cargo.toml/Cargo.lock version bump, no CLAUDE.md Current-Version, no CHANGELOG — maintainer folds metadata). cargo fmt --all -- --check + bash scripts/check_file_size.sh must pass (files < 2000 lines). Reference this issue. Never reference internal infrastructure hostnames.
Activity
test: #5841 — correct misleading doc comment on existing-var test
fix(hir): #5841 — eval-created global var/function bindings must be c…
fix(hir+codegen): #5848 — annexB global-code function-in-block reflec…
proggeramlug commentedon Jul 3, 2026
Residual (eval-code 45 → 26) tracked in the refreshed self-contained ticket #5903.
proggeramlug commentedon Aug 29, 2026
A second deterministic release blocker surfaced while validating the #5579 release fix on v0.5.1519 candidate
beb39154255ba4755b4682b9a2f1882944395848.Both existing regressions fail on the Linux parity server:
direct_eval_existing_global_var_value_is_updatedindirect_eval_existing_global_var_value_and_descriptor_are_updatedObserved descriptor:
{"value":45,"writable":true,"enumerable":true,"configurable":true}; expected the pre-existing Scriptvarbinding to remainconfigurable:false.This is independent of the #5579 fast-path fix: both eval sources contain multiple statements and never enter
try_direct_eval_simple_assignment_fold. I am tracing whyapply_global_eval_hoist_with_script_varsis not recognizing/materializing the existing Script var before publishing it.