Skip to content

test262: Symbol conformance fixes (wave 13) - #72

Merged
hiett merged 1 commit into
experiment/js-frontendfrom
js262/wave13-Symbol
Jul 15, 2026
Merged

test262: Symbol conformance fixes (wave 13)#72
hiett merged 1 commit into
experiment/js-frontendfrom
js262/wave13-Symbol

Conversation

@hiett

@hiett hiett commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Recognizes the two Explicit Resource Management (ES2026) well-known Symbols, Symbol.dispose and Symbol.asyncDispose, as fixed unique Symbol values (§ well-known symbols table). Each has typeof "symbol", is === only to itself, is distinct from other well-known symbols, and is absent from the global registry so Symbol.keyFor returns undefined.

Fixes test262 built-ins/Symbol/dispose/no-key.js and built-ins/Symbol/asyncDispose/no-key.js (Symbol suite pass 14 -> 16).

The rest of the reachable Symbol residual is boundary-gated (symbol-keyed property store / Symbol wrapper objects — the documented v1 boundary; Object.defineProperty/getOwnPropertyDescriptor/getPrototypeOf tarpits; $262 cross-realm; and .call receiver-forwarding on a stored unbound prototype method, which needs the shared func_call helper).

Explicit Resource Management (ES2026) defines two additional well-known
Symbols, @@dispose and @@asyncDispose. Like the other well-known symbols
in this compiler they need to EXIST as fixed unique values: typeof each is
"symbol", each is === only to itself, and none are registered in the
global symbol registry, so Symbol.keyFor returns undefined for them.

Fixes test262 built-ins/Symbol/{dispose,asyncDispose}/no-key.js.
@hiett
hiett merged commit f0eb424 into experiment/js-frontend Jul 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant