- From: Alexey Shvayka <notifications@github.com>
- Date: Wed, 10 Mar 2021 16:33:54 -0800
- To: heycam/webidl <webidl@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <heycam/webidl/pull/963@github.com>
Given that `X` is [named properties object](https://heycam.github.io/webidl/#named-properties-object) for `Window`, the following code: ```js Object.defineProperty(X, Symbol.toStringTag, Object.getOwnPropertyDescriptor(X, Symbol.toStringTag)); ``` should throw `TypeError` per current spec. While being compliant with [invariants of EIM](https://tc39.es/ecma262/#sec-invariants-of-the-essential-internal-methods), this behavior is very weird. The same snippet for `X` that is [module namespace object](https://tc39.es/ecma262/#sec-module-namespace-exotic-objects) doesn't throw, even though the namespace is non-extensible and its `Symbol.toStringTag` is non-configurable. While we could just special-case `Symbol.toStringTag` or own properties that are symbols, I suggest we treat symbols in [`[[DefineOwnProperty]]`](https://heycam.github.io/webidl/#named-properties-object-defineownproperty) and [`[[Delete]]`](https://heycam.github.io/webidl/#named-properties-object-delete) the same way as ordinary methods do. To prevent clashes with [supported property names](https://html.spec.whatwg.org/multipage/window-object.html#named-access-on-the-window-object), it's critical for `WindowProperties` to prohibit expando properties that are strings, but not symbols. Proposed change feels like an expected behavior, reducing divergence with ordinary methods, and aligns [named properties object](https://heycam.github.io/webidl/#named-properties-object) with [legacy platforms objects](https://heycam.github.io/webidl/#legacy-platform-object-defineownproperty) & [module namespace object](https://tc39.es/ecma262/#sec-module-namespace-exotic-objects-defineownproperty-p-desc). It is already implemented in **Blink** and also, with [bug #222918](https://bugs.webkit.org/show_bug.cgi?id=222918), in **WebKit**. Currently, no browser features spec-perfect `WindowProperties` object, so this change can be implemented along with [fixing current spec incompatibilities](https://github.com/web-platform-tests/wpt/pull/27970#issue-588774871). Tests: https://github.com/web-platform-tests/wpt/pull/27970. _cc_ @domenic @evilpie You can view, comment on, or merge this pull request online at: https://github.com/heycam/webidl/pull/963 -- Commit Summary -- * Named properties object: allow symbols in [[DefineOwnProperty]] and [[Delete]] -- File Changes -- M index.bs (14) -- Patch Links -- https://github.com/heycam/webidl/pull/963.patch https://github.com/heycam/webidl/pull/963.diff -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/heycam/webidl/pull/963
Received on Thursday, 11 March 2021 00:34:07 UTC