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

annevk 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>

I guess as long as the "API" for other standards is clear it doesn't matter much how it's implemented here.

Implementation-wise, I know Gecko stores the set of interfaces on the object itself, do Chromium and WebKit do something else? If they all do that, what is the reason to not do it here and move the location where we invoke "inherited interfaces"? All things being equal I'd much rather implicitly recommend an optimal implementation strategy.

-- 
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_r240165063

Received on Monday, 10 December 2018 10:55:50 UTC