- From: Timothy Gu <notifications@github.com>
- Date: Tue, 29 Jun 2021 16:52:16 -0700
- To: heycam/webidl <webidl@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <heycam/webidl/pull/914/review/695578515@github.com>
@TimothyGu commented on this pull request.
Just wondering @ExE-Boss, have you had any progress on writing tests for this PR?
> @@ -11792,11 +11786,8 @@ in which case they are exposed on every object that [=implements=] the interface
1. If |attribute|'s type is a [=promise type=], then return
[=!=] <a abstract-op>Call</a>({{%Promise.reject%}}, {{%Promise%}}, «|E|»).
1. Otherwise, end these steps and allow the exception to propagate.
- 1. Let |F| be [=!=] <a abstract-op>CreateBuiltinFunction</a>(|steps|, « », |realm|).
- 1. Let |name| be the string "<code>get </code>" prepended to |attribute|'s [=identifier=].
- 1. Perform [=!=] <a abstract-op>SetFunctionName</a>(|F|, |name|).
- 1. Perform [=!=] <a abstract-op>SetFunctionLength</a>(|F|, 0).
- 1. Return |F|.
+ 1. Let |name| be |attribute|'s [=identifier=].
+ 1. Return [=!=] [$CreateBuiltinFunction$](|steps|, 0, |name|, « », |realm|, {{%Function.prototype%}}, "<code>get</code>").
```suggestion
1. Return [=!=] [$CreateBuiltinFunction$](|steps|, 0, |name|, « », |realm|,
|realm|.\[[Intrinsics]].\[[{{%Function.prototype%}}]], "<code>get</code>").
```
We need to use the %Function.prototype% from _realm_, since when this operation is called there could well be no current realm.
> @@ -11878,11 +11869,8 @@ in which case they are exposed on every object that [=implements=] the interface
1. Perform the [=setter steps=] of |attribute|,
with |idlObject| as [=this=] and |idlValue| as [=the given value=].
1. Return <emu-val>undefined</emu-val>
- 1. Let |F| be [=!=] <a abstract-op>CreateBuiltinFunction</a>(|steps|, « », |realm|).
- 1. Let |name| be the string "<code>set </code>" prepended to |id|.
- 1. Perform [=!=] <a abstract-op>SetFunctionName</a>(|F|, |name|).
- 1. Perform [=!=] <a abstract-op>SetFunctionLength</a>(|F|, 1).
- 1. Return |F|.
+ 1. Let |name| be |attribute|'s [=identifier=].
+ 1. Return be [=!=] [$CreateBuiltinFunction$](|steps|, 1, |name|, « », |realm|, {{%Function.prototype%}}, "<code>set</code>").
Ditto. Explicitly get %Function.prototype% from _realm_.
> 1. Perform [=!=] [$CreateDataProperty$](|handler|, "<code>preventExtensions</code>", |preventExtensions|).
- 1. Let |set| be [=!=] [$CreateBuiltinFunction$](the steps from [[#es-observable-array-set]], « », |realm|).
+ 1. Let |set| be [=!=] [$CreateBuiltinFunction$](the steps from [[#es-observable-array-set]], the number of non-optional parameters from [[#es-observable-array-set]], "<code>set</code>", « », |realm|).
1. Perform [=!=] [$CreateDataProperty$](|handler|, "<code>set</code>", |set|).
For readability, may I suggest a tabular format like this:
6. For each row in the following table:
Name | Section | Length
---|---|---
"`defineProperty`" | [§ 3.10.1 defineProperty](https://heycam.github.io/webidl/#es-observable-array-defineProperty) | 3
"`deleteProperty`" | [§ 3.10.2 deleteProperty](https://heycam.github.io/webidl/#es-observable-array-deleteProperty) | 2
… | … | …
1. Let (_name_, _section_, _length_) be the entries of the current row.
2. Let _F_ be ! CreateBuiltinFunction(the steps from _section_, _length_, _name_, « », _realm_).
3. Perform ! CreateDataProperty(_handler_, _name_, _F_).
This helps make length changes more visible to implementors and folks writing tests, and also seems to be generally more readable.
--
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/914#pullrequestreview-695578515
Received on Tuesday, 29 June 2021 23:52:29 UTC