- From: Domenic Denicola <notifications@github.com>
- Date: Wed, 04 May 2022 12:19:26 -0700
- To: whatwg/webidl <webidl@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/webidl/pull/1138/review/962360511@github.com>
@domenic commented on this pull request.
This round of editorial fixes seems likely final-ish...
> @@ -12995,207 +12872,301 @@ with the following characteristics:
The [=map size getter=] is a [=built-in function object=]
whose behavior when invoked is as follows:
- 1. Let |O| be the <emu-val>this</emu-val> value.
- 1. If |O| [=is a platform object=],
- then [=perform a security check=], passing:
- * the platform object |O|,
- * the identifier "<code>size</code>", and
- * the type "<code>getter</code>".
- 1. If |O| does not [=implement=] <var ignore>A</var>, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
- 1. Let |map| be the {{ECMAScript/Map}} object that is the value of |O|’s \[[BackingMap]] [=internal slot=].
- 1. Return [=!=] <a abstract-op>Get</a>(|map|, "<code>size</code>").
+ 1. Let |O| be the <emu-val>this</emu-val> value, [=implementation-checked=] against <var ignore>a</var> with identifier "<code>size</code>" and type "<code>getter</code>".
```suggestion
1. Let |O| be the <emu-val>this</emu-val> value, [=implementation-checked=] against <var ignore>A</var> with identifier "<code>size</code>" and type "<code>getter</code>".
```
here and below
> @@ -12995,207 +12872,301 @@ with the following characteristics:
The [=map size getter=] is a [=built-in function object=]
whose behavior when invoked is as follows:
- 1. Let |O| be the <emu-val>this</emu-val> value.
- 1. If |O| [=is a platform object=],
- then [=perform a security check=], passing:
- * the platform object |O|,
- * the identifier "<code>size</code>", and
- * the type "<code>getter</code>".
- 1. If |O| does not [=implement=] <var ignore>A</var>, then [=ECMAScript/throw=] a {{ECMAScript/TypeError}}.
- 1. Let |map| be the {{ECMAScript/Map}} object that is the value of |O|’s \[[BackingMap]] [=internal slot=].
- 1. Return [=!=] <a abstract-op>Get</a>(|map|, "<code>size</code>").
+ 1. Let |O| be the <emu-val>this</emu-val> value, [=implementation-checked=] against <var ignore>a</var> with identifier "<code>size</code>" and type "<code>getter</code>".
+ 1. Let |map| be the [=map entries=] of the IDL value
+ that represents a reference to |O|.
+ 1. Return |map|'s [=map/size=], [=converted to an ECMAScript value=].
</div>
There appears to be a stray `<div>` here. If we put a `<div algorithm>` around the entire section then we could remove the `<var ignore>`.... or we could just delete this.
>
+<div algorithm>
+ To <dfn>create a map iterator</dfn>
+ from a [=/map=] |map|
+ and a |kind| which is either "<code>key+value</code>", "<code>key</code>", or "<code>value</code>"):
```suggestion
and a |kind| which is either "<code>key+value</code>", "<code>key</code>", or "<code>value</code>":
```
>
+<div algorithm>
+ To <dfn>create a map iterator</dfn>
+ from a [=/map=] |map|
+ and a |kind| which is either "<code>key+value</code>", "<code>key</code>", or "<code>value</code>"):
+
+ 1. Let |closure| be a new [=/Abstract Closure=] with no parameters
+ that captures |map| and |kind| and performs the following steps when called:
+ 1. [=map/For each=] |key| → |value| of |map|:
+ 1. Set |key| and |value| to each [=converted to an ECMAScript value=].
+ 1. If |kind| is "<code>key</code>", let |result| be |key|.
+ 1. Else if |kind| is "<code>value</code>", let |result| be |value|.
+ 1. Else, let |result| be [$CreateArrayFromList$](« |key|, |value| »).
+ 1. Perform [=?=] [$GeneratorYield$]([$CreateIterResultObject$](|result|, <emu-value>false</emu-value>)).
```suggestion
1. Perform [=?=] [$GeneratorYield$]([$CreateIterResultObject$](|result|, <emu-val>false</emu-val>)).
```
I found three other instances, so a general Ctrl+F for "emu-value" would be worthwhile.
> + and a |kind| which is either "<code>key+value</code>", "<code>key</code>", or "<code>value</code>"):
+
+ 1. Let |closure| be a new [=/Abstract Closure=] with no parameters
+ that captures |map| and |kind| and performs the following steps when called:
+ 1. [=map/For each=] |key| → |value| of |map|:
+ 1. Set |key| and |value| to each [=converted to an ECMAScript value=].
+ 1. If |kind| is "<code>key</code>", let |result| be |key|.
+ 1. Else if |kind| is "<code>value</code>", let |result| be |value|.
+ 1. Else, let |result| be [$CreateArrayFromList$](« |key|, |value| »).
+ 1. Perform [=?=] [$GeneratorYield$]([$CreateIterResultObject$](|result|, <emu-value>false</emu-value>)).
+
+ Note: The [=map/size=] of |map|, and the order of its entries,
+ might have changed while execution of this abstract operation
+ was paused by [$Yield$].
+ 1. Return <emu-value>undefined</emu>.
+ 1. Return [$CreateIteratorFromClosure$](|closure|, "%MapIteratorPrototype%", {{%MapIteratorPrototype%}}).
```suggestion
1. Return [$CreateIteratorFromClosure$](|closure|, "<code>%MapIteratorPrototype%</code>", {{%MapIteratorPrototype%}}).
```
here and for the set counterpart
>
-The value of the [=function objects=]’ <code class="idl">length</code> properties is the Number value <emu-val>0</emu-val>.
+The value of the [=function object=]'s <code class="idl">length</code> properties is the Number value <emu-val>0</emu-val>.
properties -> property, here and below
>
-The value of the [=function object=]’s <code class="idl">name</code> property is the String value "<code>keys</code>" or "<code>values</code>", correspondingly.
+The value of the [=function object=]’s <code class="idl">name</code> property is the String value "<code>entries</code>".
It isn't really your mess to clean up but now we have inconsistent smart vs. not-smart quotes on these clauses... if you wanted to make them consistent (probably not-smart?) then that would make things slightly nicer.
> 1. Return |O|.
</div>
The value of the [=function object=]’s <code class="idl">length</code> property is the Number value <emu-val>2</emu-val>.
The value of the [=function object=]’s <code class="idl">name</code> property is the String value "<code>set</code>".
+Note: If the interface does declare a <code class=idl>set</code> method,
```suggestion
If the interface does declare a <code class=idl>set</code> method,
```
(don't use normative language "should"/"must" in non-normative notes)
Here and below
--
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/webidl/pull/1138#pullrequestreview-962360511
You are receiving this because you are subscribed to this thread.
Message ID: <whatwg/webidl/pull/1138/review/962360511@github.com>
Received on Wednesday, 4 May 2022 19:19:39 UTC