Skip to content

test262 eval-code annexB+language — 45 (self-contained worklist) #5841

Description

@proggeramlug

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

  1. added
    parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystem
    on Jul 1, 2026
  2. added a commit that references this issue on Jul 2, 2026
  3. added 2 commits that reference this issue on Jul 2, 2026
  4. proggeramlug commented on Jul 3, 2026

    @proggeramlug
    ContributorAuthor

    Residual (eval-code 45 → 26) tracked in the refreshed self-contained ticket #5903.

  5. proggeramlug commented on Aug 29, 2026

    @proggeramlug
    ContributorAuthor

    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_updated
    • indirect_eval_existing_global_var_value_and_descriptor_are_updated

    Observed descriptor: {"value":45,"writable":true,"enumerable":true,"configurable":true}; expected the pre-existing Script var binding to remain configurable: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 why apply_global_eval_hoist_with_script_vars is not recognizing/materializing the existing Script var before publishing it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystem

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions