Parent: #496, #465. Found while qualifying #1090.
Executed on exact parent bc83af30: class Box { target = new.target; arrow = () => new.target; } is accepted by Node and evaluates to [true,true] when both reads are compared with undefined. zig-js tree and required-VM modes both return ERR UnexpectedToken.
The parser gives ordinary functions/methods and static blocks a NewTarget context, but does not introduce that context while parsing a field initializer. Field initialization is a function context; arrows inherit it. Computed field names remain in the surrounding context and must not acquire the initializer's permission.
Scope: introduce and restore the parser's existing NewTarget depth around the field initializer expression only. Pin public/private, instance/static, arrow, nested-class, and computed-name/non-leak boundaries; preserve arguments, SuperCall, await/yield, and return restrictions. Run affected class/NewTarget/arrow corpus comparisons against the saved exact-parent binary and publish scoped flips.
Definition of done:
- Node-confirmed accepted/rejected syntax is pinned, including restoration after successful and failing initializers.
- Tree/required-VM runtime reads return undefined and preserve initializer/lexical contexts.
- Focused parser/engine, ReleaseSafe/TSan and exact-parent affected corpus outcomes are measured; production build passes.
- Small conventional fix and evidence are pushed to main; #1090 remains separate.