- From: Timothy Gu <notifications@github.com>
- Date: Sun, 10 Dec 2017 23:16:33 +0000 (UTC)
- To: heycam/webidl <webidl@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <heycam/webidl/pull/494/review/82366312@github.com>
TimothyGu commented on this pull request.
> - 1. Otherwise, if |A| is declared to inherit from another
- interface, then return the
- [=interface prototype object=]
- for the inherited interface.
- 1. Otherwise, if |A| is declared with the [{{LegacyArrayClass}}]
- extended attribute, then return {{%ArrayPrototype%}}.
- 1. Otherwise, return {{%ObjectPrototype%}}.
+ 1. Let |proto| be null.
+ 1. If |interface| is declared with the [{{Global}}] [=extended attribute=],
+ and |interface| [=support named properties|supports named properties=],
+ then set |proto| to the [=named properties object=] of |interface|,
+ as defined in [[#named-properties-object]].
+ 1. Otherwise, if |interface| is declared to inherit from another interface,
+ then set |proto| to the [=interface prototype object=] of the inherited interface.
+ 1. Otherwise, if |interface| is declared with the [{{LegacyArrayClass}}] [=extended attribute=],
+ then set |proto| to the {{%ArrayPrototype%}} of |realm|.
`|realm|.[[Intrinsics]].[[{{%ArrayPrototype%}}]]`
Check out https://tc39.github.io/ecma262/#table-21.
> - interface, then return the
- [=interface prototype object=]
- for the inherited interface.
- 1. Otherwise, if |A| is declared with the [{{LegacyArrayClass}}]
- extended attribute, then return {{%ArrayPrototype%}}.
- 1. Otherwise, return {{%ObjectPrototype%}}.
+ 1. Let |proto| be null.
+ 1. If |interface| is declared with the [{{Global}}] [=extended attribute=],
+ and |interface| [=support named properties|supports named properties=],
+ then set |proto| to the [=named properties object=] of |interface|,
+ as defined in [[#named-properties-object]].
+ 1. Otherwise, if |interface| is declared to inherit from another interface,
+ then set |proto| to the [=interface prototype object=] of the inherited interface.
+ 1. Otherwise, if |interface| is declared with the [{{LegacyArrayClass}}] [=extended attribute=],
+ then set |proto| to the {{%ArrayPrototype%}} of |realm|.
+ 1. Otherwise, set |proto| to the {{%ObjectPrototype%}} of |realm|.
Ditto.
> - [=interface prototype object=]
- for the inherited interface.
- 1. Otherwise, if |A| is declared with the [{{LegacyArrayClass}}]
- extended attribute, then return {{%ArrayPrototype%}}.
- 1. Otherwise, return {{%ObjectPrototype%}}.
+ 1. Let |proto| be null.
+ 1. If |interface| is declared with the [{{Global}}] [=extended attribute=],
+ and |interface| [=support named properties|supports named properties=],
+ then set |proto| to the [=named properties object=] of |interface|,
+ as defined in [[#named-properties-object]].
+ 1. Otherwise, if |interface| is declared to inherit from another interface,
+ then set |proto| to the [=interface prototype object=] of the inherited interface.
+ 1. Otherwise, if |interface| is declared with the [{{LegacyArrayClass}}] [=extended attribute=],
+ then set |proto| to the {{%ArrayPrototype%}} of |realm|.
+ 1. Otherwise, set |proto| to the {{%ObjectPrototype%}} of |realm|.
+ 1. Let |interfaceProtoObj| be [=!=] <a abstract-op>ObjectCreate</a>(proto).
`|proto|`
> + 1. Let |proto| be null.
+ 1. If |interface| is declared with the [{{Global}}] [=extended attribute=],
+ and |interface| [=support named properties|supports named properties=],
+ then set |proto| to the [=named properties object=] of |interface|,
+ as defined in [[#named-properties-object]].
+ 1. Otherwise, if |interface| is declared to inherit from another interface,
+ then set |proto| to the [=interface prototype object=] of the inherited interface.
+ 1. Otherwise, if |interface| is declared with the [{{LegacyArrayClass}}] [=extended attribute=],
+ then set |proto| to the {{%ArrayPrototype%}} of |realm|.
+ 1. Otherwise, set |proto| to the {{%ObjectPrototype%}} of |realm|.
+ 1. Let |interfaceProtoObj| be [=!=] <a abstract-op>ObjectCreate</a>(proto).
+ 1. Let |unscopableObject| be null.
+ 1. If |interface| has any [=member=] declared with the [{{Unscopable}}] [=extended attribute=],
+ then:
+ 1. Set |unscopableObject| to be [=!=]
+ <a abstract-op>ObjectCreate</a>({{%ObjectPrototype%}} of |realm|).
Ditto.
> + 1. Otherwise, if |interface| is declared to inherit from another interface,
+ then set |proto| to the [=interface prototype object=] of the inherited interface.
+ 1. Otherwise, if |interface| is declared with the [{{LegacyArrayClass}}] [=extended attribute=],
+ then set |proto| to the {{%ArrayPrototype%}} of |realm|.
+ 1. Otherwise, set |proto| to the {{%ObjectPrototype%}} of |realm|.
+ 1. Let |interfaceProtoObj| be [=!=] <a abstract-op>ObjectCreate</a>(proto).
+ 1. Let |unscopableObject| be null.
+ 1. If |interface| has any [=member=] declared with the [{{Unscopable}}] [=extended attribute=],
+ then:
+ 1. Set |unscopableObject| to be [=!=]
+ <a abstract-op>ObjectCreate</a>({{%ObjectPrototype%}} of |realm|).
+ 1. Let |desc| be the PropertyDescriptor{\[[Writable]]: <emu-val>false</emu-val>,
+ \[[Enumerable]]: <emu-val>false</emu-val>, \[[Configurable]]: <emu-val>true</emu-val>,
+ \[[Value]]: |unscopableObject|}.
+ 1. Perform [=!=] <a abstract-op>DefinePropertyOrThrow</a>(|interfaceProtoObj|, {{@@unscopables}}, |desc|).
+ 1. For each [=exposed=] [=regular attribute=] |attr| that is a [=member=] of |interface|,
Infra says this step should end with a colon instead of a comma.
> + 1. Otherwise, if |interface| is declared with the [{{LegacyArrayClass}}] [=extended attribute=],
+ then set |proto| to the {{%ArrayPrototype%}} of |realm|.
+ 1. Otherwise, set |proto| to the {{%ObjectPrototype%}} of |realm|.
+ 1. Let |interfaceProtoObj| be [=!=] <a abstract-op>ObjectCreate</a>(proto).
+ 1. Let |unscopableObject| be null.
+ 1. If |interface| has any [=member=] declared with the [{{Unscopable}}] [=extended attribute=],
+ then:
+ 1. Set |unscopableObject| to be [=!=]
+ <a abstract-op>ObjectCreate</a>({{%ObjectPrototype%}} of |realm|).
+ 1. Let |desc| be the PropertyDescriptor{\[[Writable]]: <emu-val>false</emu-val>,
+ \[[Enumerable]]: <emu-val>false</emu-val>, \[[Configurable]]: <emu-val>true</emu-val>,
+ \[[Value]]: |unscopableObject|}.
+ 1. Perform [=!=] <a abstract-op>DefinePropertyOrThrow</a>(|interfaceProtoObj|, {{@@unscopables}}, |desc|).
+ 1. For each [=exposed=] [=regular attribute=] |attr| that is a [=member=] of |interface|,
+ 1. Let |getter| be the result of creating an [=attribute getter=]
+ given |attr|, |interface|, and |realm|.
nit: extra space before `and`. Ditto two lines down.
> + 1. Let |desc| be the PropertyDescriptor{\[[Writable]]: <emu-val>false</emu-val>,
+ \[[Enumerable]]: <emu-val>true</emu-val>, \[[Configurable]]: <emu-val>false</emu-val>,
+ \[[Value]]: |value|}.
+ 1. Let |id| be |const|'s [=identifier=].
+ 1. Perform [=!=] <a abstract-op>DefinePropertyOrThrow</a>(|interfaceProtoObj|, |id|, |desc|).
+ 1. If the [{{NoInterfaceObject}}] [=extended attribute=] was not specified on |interface|, then:
+ 1. Let |constructor| be the [=interface object=] of |interface|.
+ 1. Let |desc| be the PropertyDescriptor{\[[Writable]]: <emu-val>true</emu-val>,
+ \[[Enumerable]]: <emu-val>false</emu-val>, \[[Configurable]]: <emu-val>true</emu-val>,
+ \[[Value]]: |constructor|}.
+ 1. Perform [=!=] <a abstract-op>DefinePropertyOrThrow</a>(|interfaceProtoObj|, "<code>constructor</code>", |desc|).
+ 1. Let |value| be the concatenation of the |interface|’s [=identifier=]
+ and the string "<code>Prototype</code>".
+ 1. Let |desc| be the PropertyDescriptor{\[[Writable]]: <emu-val>false</emu-val>,
+ \[[Enumerable]]: <emu-val>false</emu-val>, \[[Configurable]]: <emu-val>false</emu-val>,
+ \[[Value]]: |value|}.
https://heycam.github.io/webidl/#issue-48167bcc says:
> Should define whether `@@toStringTag` is writable, enumerable and configurable. All `@@toStringTag` properties in the ECMAScript spec are non-writable and non-enumerable, and configurable.
I assume this "issue" has been resolved?
--
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/494#pullrequestreview-82366312
Received on Sunday, 10 December 2017 23:16:58 UTC