Re: [heycam/webidl] Editorial: Avoid changing internal methods of ordinary objects (#901)

@domenic commented on this pull request.



> @@ -11288,7 +11288,18 @@ with the [{{LegacyNoInterfaceObject}}] [=extended attribute=].
         then set |proto| to |realm|.\[[Intrinsics]].[[{{%Error.prototype%}}]].
     1.  Otherwise, set |proto| to |realm|.\[[Intrinsics]].[[{{%Object.prototype%}}]].
     1.  Assert: <a abstract-op>Type</a>(|proto|) is Object.
-    1.  Let |interfaceProtoObj| be [=!=] [$OrdinaryObjectCreate$](|proto|).
+    1.  Let |interfaceProtoObj| be null.
+    1.  If |interface| is declared with the [{{Global}}] [=extended attribute=], or
+        |interface| is in the set of [=inherited interfaces=] of an interface
+        that is declared with the [{{Global}}] [=extended attribute=], then:
+        1.  Set |interfaceProtoObj| to [=!=] [$MakeBasicObject$](« \[[Prototype]], \[[Extensible]] »).
+        1.  Set |interfaceProtoObj|.\[[Prototype]] to |proto|.
+        1.  Set the internal methods of |interfaceProtoObj|
+            which are specific to [=immutable prototype exotic objects=]
+            to the definitions specified in
+            [=ECMA-262 Immutable prototype exotic objects=].
+    1.  Otherwise, set |interfaceProtoObj| to [=!=] [$OrdinaryObjectCreate$](|proto|).
+    1.  Assert: [$Type$](|interfaceProtoObj|) is Object.

Let's remove this assert; it's quite redundant to anyone who's read the previous two steps.

-- 
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/901#pullrequestreview-443413525

Received on Monday, 6 July 2020 21:18:03 UTC