[whatwg/webidl] No support about @@unscopables inheritance (Issue #1221)

https://webidl.spec.whatwg.org/commit-snapshots/02e834239089b82f8383cd35a234257076a712af/#interface-prototype-object


> Let unscopableObject be OrdinaryObjectCreate\(null\)\.
> 
> For each exposed member member of interface that is declared with the \[Unscopable\] extended attribute:​
> 
> Let id be member’s identifier\.
> 
> Perform \! CreateDataProperty\(unscopableObject, id, true\)\.
> 
> Let desc be the PropertyDescriptor\{\[\[Value\]\]:​ unscopableObject, \[\[Writable\]\]:​ false, \[\[Enumerable\]\]:​ false, \[\[Configurable\]\]:​ true\}\.
> 
> Perform \! DefinePropertyOrThrow\(interfaceProtoObj, @​@​unscopables, desc\)\.

The spec creates an unscopables object with the interface members with \[Unscopable\], which ends up hiding the inherited interface's unscopables object. This looks a spec issue to me.

Example)
```
interface Base {
  [Unscopable] void foo();
};

interface Derived : Base {
  [Unscopable] void bar();
};
```
will result in:
```
Base.prototype[Symbol.unscopables]
// => {foo: true}
Derived.prototype[Symbol.unscopables]
// => {bar: true}  // No entry of {foo: true}.
```


-- 
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/webidl/issues/1221

You are receiving this because you are subscribed to this thread.

Message ID: <whatwg/webidl/issues/1221@github.com>

Received on Tuesday, 18 October 2022 08:05:13 UTC