- From: Jeffrey Yasskin <notifications@github.com>
- Date: Fri, 30 Sep 2016 00:38:23 -0700
- To: heycam/webidl <webidl@noreply.github.com>
- Message-ID: <heycam/webidl/pull/180/review/2280744@github.com>
jyasskin commented on this pull request. > @@ -7529,6 +7564,82 @@ iterable |iterable| and an iterator getter </div> +<h4 id="es-open-dictionary">Open dictionaries — dictionary<[|K|,] |V|></h4> + +IDL {{dictionary}}<|K|, |V|> values are represented by +ECMAScript <emu-val>Object</emu-val> values. + +<div algorithm="convert object to open dictionary" id="es-to-open-dictionary"> + An ECMAScript value |O| is [=converted to an IDL value|converted=] to an IDL <code>{{dictionary}}<|K|, |V|></code> value as follows: + + 1. If [=Type=](|O|) is not <emu-val>Object</emu-val>, + <a lt="es throw">throw a <emu-val>TypeError</emu-val></a>. + 1. Let |result| be a new empty instance of <code>{{dictionary}}<|K|, |V|></code>. + 1. Let |entries| be [=EnumerableOwnProperties=](|O|, "key+value"). @annevk I think step 22, substep 3 of Structured Clone is equivalent to [EnumerableOwnProperties](https://tc39.github.io/ecma262/#sec-enumerableownproperties). There is an interesting question about what order we should type-check vs [[Get]]ing the values. I see at least four options: 1. Get all properties before checking their types (what I have now). 2. Get and check all the keys, and then interleave getting values with checking them. 3. Get all keys, then check a key, get its value, check its value, repeat. 4. Get all keys, then get a key's value, check the key, check the value, repeat. For sane objects these are the same, but for getters with side-effects they're not. -- 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/180#pullrequestreview-2280744
Received on Friday, 30 September 2016 07:39:01 UTC