Skip to content

REGRESSION: class extends native builtin (ArrayBuffer/Map/Promise/TypedArray/…) broke — 23 subclass-builtins cases (#5613) #5657

Closed

Description

@proggeramlug

Severity: HIGH (class extends native builtin)

The 2026-06-25 full re-sweep (main @ 9a3d2469d, perry 0.5.1206, node v26.3.0) raised overall parity to 94.1%, but 23 class extends <native builtin> cases newly broke vs the prior sweep — every subclass-builtins test under both language/statements/class and language/expressions/class:

subclass-ArrayBuffer.js       TypeError: ArrayBuffer is not a function
subclass-DataView.js          TypeError: DataView is not a function
subclass-Function.js          TypeError: Function is not a function
subclass-Promise.js           TypeError: Promise is not a function
subclass-RegExp.js            TypeError: RegExp is not a function
subclass-Map.js               TypeError: Constructor Map requires 'new'
subclass-Set.js               TypeError: Constructor Set requires 'new'
subclass-WeakMap.js           TypeError: Constructor WeakMap requires 'new'
subclass-WeakSet.js           TypeError: Constructor WeakSet requires 'new'
subclass-BigInt64Array.js     TypeError: Constructor %TypedArray% requires 'new'
subclass-BigUint64Array.js    TypeError: Constructor %TypedArray% requires 'new'

(× both statements/class and expressions/class) plus built-ins/ArrayBuffer/isView/arg-is-dataview-subclass-instance.js.

Root

Window points squarely at #5613 (6de00e8f5) — "class extending a function base must run the parent constructor (preserve derived identity)". That path now treats a native builtin base (ArrayBuffer, Map, Promise, %TypedArray%, …) as a plain callable function base and tries to invoke it as the parent constructor, but native builtins reject being called without new / aren't resolved as a callable in that path → X is not a function / Constructor requires 'new'. extends of a native builtin must route to the builtin's construct path, not the run-parent-as-function path.

This inflates the #5592 class-tail count (240 → 257); the true class tail is lower.

Smaller co-regressions from the same batch (3)

Measure

scripts/test262_subset.py --root /root/test262 --dir language/statements/class language/expressions/class built-ins/ArrayBuffer --jobs 6

on the internal Linux sweep host.

Activity

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

    @proggeramlug
    ContributorAuthor

    Re-measure 2026-06-26: #5665 fixed 21 of 23 subclass-builtins cases. 2 stragglers remain: subclass-SharedArrayBuffer.js (statements + expressions) — Expected true but got false (SharedArrayBuffer-specific, distinct from the function-base path).

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

    bugConfirmed defect or regressionparityCompatibility 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