[heycam/webidl] `maplike<>` requires spec authors to interact with a real-deal ES Map object (and others), with unfortunate consequences/complexity (#522)

This is probably deeply related to <https://github.com/heycam/webidl/issues/254>, and may actually end up being a dupe.  We'll see.

Currently, the `maplike<>` declaration talks abstractly about "map entries", defined hand-wavily as a list of key/value pairs.  When you actually get down to [the ES implementation details](https://heycam.github.io/webidl/#es-maplike), tho, you find that the maplike object contains an internal Map object (a real one, from ES, not a spec abstraction like an Infra map), and the "map entries" are the internal slot of *that* object, an ES-spec List.

There's no way to put an Infra value into an ES value, tho, which means that if, say, a spec wants to store a list of objects as the "value" in the map, it's a real-deal ES Array object. This, then, means that specs have to be *very* careful about how they manipulate the object, so they do things correctly and don't accidentally expose implementation details.

Given WebIDL's generally friendly interpenetration with Infra concepts, it feels like `maplike<>` should be defined in those terms as well, as having its "map entries" just be an Infra map, and the operations defined on that accordingly.

-- 
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/issues/522

Received on Thursday, 15 February 2018 18:35:23 UTC