Skip to content

test262 class tail — ~211 language/statements + expressions class fails #5345

Closed

Description

@proggeramlug

The largest language gap. language/statements/class = 211 fails (+ a parallel cluster in language/expressions/class).

Reasons (statements)

  • 45× Expected a ReferenceError (TDZ / binding-resolution in class bodies)
  • 37× Expected a TypeError (missed validation negatives)
  • 19× async class-method test failures
  • 12× (no output), 11× missed-negatives

Likely areas

Class static/instance field TDZ, private-field brand checks, super edge cases, async-generator methods, decorator-adjacent semantics. Deep semantics — diminishing returns per fix, but the single biggest language bucket.

Measure: scripts/test262_subset.py --dir language/statements/class language/expressions/class (node v26).

Activity

  1. proggeramlug commented on Jun 18, 2026

    @proggeramlug
    ContributorAuthor

    Status update (2026-06-18)

    Progress on the class tail since this was filed:

    No class-tail PR is currently in flight.

    Remaining, unchanged:

    • Expected a ReferenceError 45 — TDZ / binding-resolution in class bodies
    • Expected a TypeError 37 — missed validation negatives
    • async class-method failures (19), private-field brand checks, super edge cases, async-generator methods, decorator-adjacent semantics

    Deep semantics with diminishing returns per fix, but the single biggest language bucket. Keeping open as the class tracker; authoritative numbers from scripts/test262_subset.py --dir language/statements/class language/expressions/class.

  2. proggeramlug commented on Jun 21, 2026

    @proggeramlug
    ContributorAuthor

    Re-measured the class tail (scripts/test262_subset.py --dir language/statements/class language/expressions/class --jobs 7, test262 4249661): parity 95.0% — 5099 pass, 56 diff, 199 runtime-fail, 16 compile-fail.

    Opened #5508 for one concrete cluster from the compile-fail bucket: duplicate static field names (static f = …; static f = …;) emitted a redefined @perry_static_…__C__f LLVM global, so clang rejected the whole module. That sank elements/static-field-redeclaration and contributed to static-init-sequence. Fixed by deduping the defining-global emission while still running every initializer in order; added a parity gap test.

    Remaining buckets (unchanged, deep semantics):

    • runtime-fail 199 — top reasons: Expected a TypeError … not thrown (29, missed validation negatives), value is not a function (12), TDZ Expected a ReferenceError (5+), private brand-check negatives, async-method ordering.
    • compile-fail 16 — also: SWC parse rejections of valid grammar (grammar-static-ctor-*-valid, class x extends x TDZ), name-binding/in-extends-expression* codegen.
    • Note: static-init-sequence needs interleaved field/static-block ordering (currently all fields then all blocks) — a separate, larger change, not in fix(codegen): #5345 — dedup duplicate static-field LLVM global emission #5508.
  3. added a commit that references this issue on Jun 21, 2026
  4. proggeramlug commented on Jun 23, 2026

    @proggeramlug
    ContributorAuthor

    Re-measured 2026-06-23 on an internal Linux sweep host (perry 0.5.1204): the persistent class tail is 260 (statements 161, expressions 99). ⚠️ A separate regression (#5579) re-broke ~313 more class tests on current main () — that is tracked in #5579, not here. The true standing gap is refiled concretely as #5592 (accessor-name computed-in, async-gen static methods, private brand checks). Closing in favor of #5592 + #5579.

  5. proggeramlug commented on Jun 23, 2026

    @proggeramlug
    ContributorAuthor

    Correction to the note above: the regression signature in #5579 is the test262 message "m descriptor should be configurable" (class-method property descriptor).

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions