diff --git a/index.bs b/index.bs index d25b25ae4..ebc872f42 100644 --- a/index.bs +++ b/index.bs @@ -427,7 +427,7 @@ in [[#es-extended-attributes]].
     Definition :
-        CallbackOrInterface
+        CallbackOrInterfaceOrMixin
         Namespace
         Partial
         Dictionary
@@ -436,12 +436,6 @@ in [[#es-extended-attributes]].
         IncludesStatement
 
-
-    CallbackOrInterface :
-        "callback" CallbackRestOrInterface
-        Interface
-
-
The following is an example of an [=IDL fragment=]. @@ -726,8 +720,8 @@ across [=IDL fragments=]. describe object oriented systems. In such systems, objects are entities that have identity and which are encapsulations of state and behavior. An interface is a definition (matching -Interface or -callback Interface) that declares some +interface InterfaceRest or +callback interface InterfaceRest) that declares some state and behavior that an object implementing that interface will expose.
@@ -1023,17 +1017,27 @@ The following extended attributes are applicable to interfaces:
 [{{PrimaryGlobal}}], and
 [{{SecureContext}}].
 
-
+
+    CallbackOrInterfaceOrMixin :
+        "callback" CallbackRestOrInterface
+        "interface" InterfaceOrMixin
+
     CallbackRestOrInterface :
         CallbackRest
-        Interface
+        "interface" InterfaceRest
 
-
-    Interface :
-        "interface" identifier Inheritance "{" InterfaceMembers "}" ";"
+
+    InterfaceOrMixin :
+        InterfaceRest
+        MixinRest
+
+ +
+    InterfaceRest :
+        identifier Inheritance "{" InterfaceMembers "}" ";"
 
@@ -1043,15 +1047,20 @@ The following extended attributes are applicable to interfaces:
 
 
     PartialDefinition :
-        PartialInterface
-        PartialMixin
+        "interface" PartialInterfaceOrPartialMixin
         PartialDictionary
         Namespace
 
+
+    PartialInterfaceOrPartialMixin :
+        PartialInterface
+        MixinRest
+
+
     PartialInterface :
-        "interface" identifier "{" InterfaceMembers "}" ";"
+        identifier "{" InterfaceMembers "}" ";"
 
@@ -1160,12 +1169,12 @@ The following extended attributes are applicable to interfaces:
 
 

Mixins

-A mixin is a definition (matching Mixin) +A mixin is a definition (matching interface MixinRest) that declares state and behavior that can be [=included=] by one or more [=interfaces=], and that are exposed by objects that implement an [=interface=] that [=includes=] the [=mixin=].
-    mixin identifier {
+    interface mixin identifier {
       /* mixin_members... */
     };
 
@@ -1186,17 +1195,17 @@ as if they were specified on the [=interface=] that [=includes=] them. As with interfaces, the IDL for mixins can be split into multiple parts by using partial mixin definitions -(matching partial Mixin). +(matching partial interface MixinRest). The [=identifier=] of a partial mixin definition must be the same as the identifier of a mixin definition. All of the [=mixin members|members=] that appear on each of the partial mixin definitions are considered to be members of the mixin itself.
-    mixin SomeMixin {
+    interface mixin SomeMixin {
       /* mixin_members... */
     };
 
-    partial mixin SomeMixin {
+    partial interface mixin SomeMixin {
       /* mixin_members... */
     };
 
@@ -1251,7 +1260,7 @@ No [=extended attributes=] defined in this specification are applicable to [=inc // ... }; - mixin Observable { + interface mixin Observable { void addEventListener(DOMString type, EventListener listener, boolean useCapture); @@ -1282,7 +1291,7 @@ No [=extended attributes=] defined in this specification are applicable to [=inc For example, instead of:
-        mixin WindowSessionStorage {
+        interface mixin WindowSessionStorage {
           readonly attribute Storage sessionStorage;
         };
         Window includes WindowSessionStorage;
@@ -1304,7 +1313,7 @@ No [=extended attributes=] defined in this specification are applicable to [=inc
     For example, instead of the common but verbose:
 
     
-        mixin GlobalCrypto {
+        interface mixin GlobalCrypto {
           [Throws] readonly attribute Crypto crypto;
         };
 
@@ -1315,23 +1324,24 @@ No [=extended attributes=] defined in this specification are applicable to [=inc
     you can extend the {{WindowOrWorkerGlobalScope}} [=mixin=] using a [=partial mixin|partial=]:
 
     
-        partial mixin WindowOrWorkerGlobalScope {
+        partial interface mixin WindowOrWorkerGlobalScope {
           [Throws] readonly attribute Crypto crypto;
         };
     
+
+ +
+ +
+
-
-    Mixin :
-        "mixin" identifier "{" MixinMembers "}" ";"
-
- -
-    PartialMixin :
+
+    MixinRest :
         "mixin" identifier "{" MixinMembers "}" ";"
 
@@ -5029,9 +5039,9 @@ be used as the type of a [=constant=]. The following extended attribute is applicable to callback functions: [{{TreatNonObjectAsNull}}]. -
+
-
+
     CallbackRest :
@@ -11292,20 +11302,20 @@ The [=return type=] of the [=default toJSON operation=] must be {{object}}.
           attribute DOMString c;
         };
 
-        mixin M1 {
+        interface mixin M1 {
           attribute DOMString m1;
         };
 
-        mixin M2 {
+        interface mixin M2 {
           [Default] object toJSON();
           attribute DOMString m2;
         };
 
-        mixin M3 {
+        interface mixin M3 {
           attribute DOMString m3;
         };
 
-        mixin M4 {
+        interface mixin M4 {
           attribute DOMString m4;
         };