@@ -11288,7 +11288,17 @@ with the [{{LegacyNoInterfaceObject}}] [=extended attribute=].
11288
11288
then set |proto| to |realm|.\[[Intrinsics]].[[{{%Error.prototype%}}]].
11289
11289
1. Otherwise, set |proto| to |realm|.\[[Intrinsics]].[[{{%Object.prototype%}}]].
11290
11290
1. Assert: <a abstract-op>Type</a>(|proto|) is Object.
11291
- 1. Let |interfaceProtoObj| be [=!=] [$OrdinaryObjectCreate$](|proto|).
11291
+ 1. Let |interfaceProtoObj| be null.
11292
+ 1. If |interface| is declared with the [{{Global}}] [=extended attribute=], or
11293
+ |interface| is in the set of [=inherited interfaces=] of an interface
11294
+ that is declared with the [{{Global}}] [=extended attribute=], then:
11295
+ 1. Set |interfaceProtoObj| to [=!=] [$MakeBasicObject$](« \[[Prototype]], \[[Extensible]] »).
11296
+ 1. Set |interfaceProtoObj|.\[[Prototype]] to |proto|.
11297
+ 1. Set the internal methods of |interfaceProtoObj|
11298
+ which are specific to [=immutable prototype exotic objects=]
11299
+ to the definitions specified in
11300
+ [=ECMA-262 Immutable prototype exotic objects=].
11301
+ 1. Otherwise, set |interfaceProtoObj| to [=!=] [$OrdinaryObjectCreate$](|proto|).
11292
11302
1. If |interface| has any [=member=] declared with the [{{Unscopable}}] [=extended attribute=],
11293
11303
then:
11294
11304
@@ -11305,13 +11315,6 @@ with the [{{LegacyNoInterfaceObject}}] [=extended attribute=].
11305
11315
\[[Writable]]: <emu-val>false</emu-val>, \[[Enumerable]]: <emu-val>false</emu-val>,
11306
11316
\[[Configurable]]: <emu-val>true</emu-val>}.
11307
11317
1. Perform [=!=] <a abstract-op>DefinePropertyOrThrow</a>(|interfaceProtoObj|, {{@@unscopables}}, |desc|).
11308
- 1. If |interface| is declared with the [{{Global}}] [=extended attribute=], or
11309
- |interface| is in the set of [=inherited interfaces=] of an interface
11310
- that is declared with the [{{Global}}] [=extended attribute=], then:
11311
- 1. Set the internal methods of |interfaceProtoObj|
11312
- which are specific to [=immutable prototype exotic objects=]
11313
- to the definitions specified in
11314
- [=ECMA-262 Immutable prototype exotic objects=].
11315
11318
1. If |interface| is not declared with the [{{Global}}] [=extended attribute=], then:
11316
11319
1. [=Define the regular attributes=] of |interface| on |interfaceProtoObj| given |realm|.
11317
11320
1. [=Define the regular operations=] of |interface| on |interfaceProtoObj| given |realm|.
0 commit comments