Re: [heycam/webidl] Define "implements" checks using internal slots (#595)

littledan commented on this pull request.



> @@ -12337,18 +12336,73 @@ The value of the [=function object=]’s <code class="idl">name</code> property
 
 <h3 id="es-platform-objects">Platform objects implementing interfaces</h3>
 
+<div algorithm>
+    An ECMAScript value |value| <dfn id="es-is-platform-object">is a platform object</dfn>
+    if [$Type$](|value|) is Object and if |value| has a \[[PrimaryInterface]] internal slot.
+</div>
+
+<div algorithm>
+    An ECMAScript value |value| <dfn export>implements</dfn> an [=interface=] |interface|
+    if |value| [=is a platform object=] and one of the following is true:
+    <ul>
+        <li>|value|.\[[PrimaryInterface]] is |interface|.</li>
+        <li>The set of [=inherited interfaces=] of |value|.\[[PrimaryInterface]] contains |interface|.</li>

Right, this PR is trying to get at the same thing as you were proposing with `[[PlatformBrand]]`.

I don't see the downside to the implementation or specification strategy to use shared data structures here during the actual check itself. We will have to look up the brand set from these data structures at some point one way or another, just a question of whether we shift the lookup a bit earlier.

-- 
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/595#discussion_r240159088

Received on Monday, 10 December 2018 10:37:21 UTC