Severity: HIGH (class method property descriptors)
A re-measure of the honest test262 sweep caught a regression: overall parity dropped 91.8% → 90.4% despite annexB (+10.6) and intl402 (+3.7) gains — because language fell 94.5% → 89.3%.
What regressed
770 newly-failing tests (passed on main @ dbedba916, fail on main @ 73d1fede4), of which 760 are class tests:
- 384
language/statements/class
- 376
language/expressions/class
752 share one reason: Uncaught exception: m descriptor should be configurable — i.e. a class method's property descriptor is now wrong (a method that should be configurable: true no longer is, per verifyProperty in propertyHelper.js).
Trigger is a specific shape
Isolated repros are FINE — Object.getOwnPropertyDescriptor(C.prototype,'m') on both a plain class C { m(){} } and class C { #x=1; m(v){...} } correctly yields {writable:true,enumerable:false,configurable:true} on the current binary. So the break is a narrower class-method shape exercised by the flags: [generated] grammar-permutation class tests (generator/computed/private-adjacent method forms). Repro: run scripts/test262_subset.py --dir language/statements/class (node v26), grab a m descriptor should be configurable failure, and inspect its class body.
Regression window + prime suspects
Between main dbedba916 (2026-06-17) and 73d1fede4 (2026-06-19). PRs touching class method/descriptor/reflection in that window:
git bisect over that range against one failing case will pin it fast.
Fix
Restore the correct class-method descriptor (configurable:true, enumerable:false, writable:true) for whatever method shape #5395 (or the culprit) altered, without losing that PR's super-in-static / accessor-.name gain.
Found via the honest re-measure (#5300 follow-up). Class-tail tracker: #5345.
Severity: HIGH (class method property descriptors)
A re-measure of the honest test262 sweep caught a regression: overall parity dropped 91.8% → 90.4% despite annexB (+10.6) and intl402 (+3.7) gains — because language fell 94.5% → 89.3%.
What regressed
770 newly-failing tests (passed on main @
dbedba916, fail on main @73d1fede4), of which 760 are class tests:language/statements/classlanguage/expressions/class752 share one reason:
Uncaught exception: m descriptor should be configurable— i.e. a class method's property descriptor is now wrong (a method that should beconfigurable: trueno longer is, perverifyPropertyin propertyHelper.js).Trigger is a specific shape
Isolated repros are FINE —
Object.getOwnPropertyDescriptor(C.prototype,'m')on both a plainclass C { m(){} }andclass C { #x=1; m(v){...} }correctly yields{writable:true,enumerable:false,configurable:true}on the current binary. So the break is a narrower class-method shape exercised by theflags: [generated]grammar-permutation class tests (generator/computed/private-adjacent method forms). Repro: runscripts/test262_subset.py --dir language/statements/class(node v26), grab am descriptor should be configurablefailure, and inspect its class body.Regression window + prime suspects
Between main
dbedba916(2026-06-17) and73d1fede4(2026-06-19). PRs touching class method/descriptor/reflection in that window:fix(class): super-in-static resolution + accessor .name reflection← prime suspect (touched class method/accessor property definition)Object.setPrototypeOf TypeError, codegen: derived-ctor this-TDZ on standalone constructor-symbol path (toward #5345) #5362derived-ctor this-TDZ, fix(hir,codegen): route class-extends userland stream-shim ctor through its real constructor (winston) #5357class-extends stream-shim ctor, and the Object-descriptor PRs.git bisectover that range against one failing case will pin it fast.Fix
Restore the correct class-method descriptor (
configurable:true, enumerable:false, writable:true) for whatever method shape #5395 (or the culprit) altered, without losing that PR's super-in-static / accessor-.name gain.Found via the honest re-measure (#5300 follow-up). Class-tail tracker: #5345.