diff --git a/index.bs b/index.bs
index ff3303508..8c7e974f7 100644
--- a/index.bs
+++ b/index.bs
@@ -4430,7 +4430,7 @@ A module has a [=list=] of
module members which are
[=interfaces=], [=read only=] [=regular attributes=], and [=regular operations=].
-The [=module members=] of a [=module=] |module| are given by the following steps:
+The [=module/module members=] of a [=module=] |module| are given by the following steps:
1. Let |result| be « ».
1. Let |specifier| be |module|'s [=module/specifier=].
@@ -4459,8 +4459,8 @@ Note: The order that members appear in this list has significance for property e
Issue: Exclude [=partial interfaces=]?
-For all [=modules=] |module|, all [=interfaces=] that are in |module|'s [=module/module members=]
-have their [=interface/enclosing module=] set to |module|.
+For all [=modules=] |module|, all [=interfaces=] and [=partial interfaces=] that are in |module|'s
+[=module/module members=] have their [=interface/enclosing module=] set to |module|.
The
url of a [=module=] |module| is given by the following steps:
@@ -4556,6 +4556,8 @@ Of the [=extended attributes=] defined in this specification, only [{{Exposed}}]
For each [=module declaration=] |declaration|, there must exist a [=module=] whose
[=module/specifier=] is given by |declaration|'s [=module declaration/specifier=].
+This [=module=] is considered to have the [=extended attributes=] that are specified on
+|declaration|.
A
partial module declaration is a [=definition=] matching the
PartialModule nonterminal symbol.
@@ -4574,9 +4576,9 @@ whose [=module declaration/specifier=] is |declaration|'s
The [=partial module declaration/partial module declaration members|members=] of a
[=partial module declaration=] must not be [=list/is empty|empty=].
-[=Module members=] and [=interface members=] of [=interfaces=] whose
-[=interface/enclosing module=] is not null must not
-be annotated with the [{{Exposed}}] or [{{SecureContext}}] [=extended attributes=].
+[=Module members=] and [=interface members|members=] of [=interfaces=] whose
+[=interface/enclosing module=] is not null must not be annotated with the [{{Exposed}}] or
+[{{SecureContext}}] [=extended attributes=].
Note: The restrictions on the [{{Exposed}}] and [{{SecureContext}}] [=extended attributes=] in
this section could be relaxed if there is a sufficient use case;
@@ -13284,7 +13286,7 @@ The characteristics of a namespace object are described in [[#namespace-object]]
1. [=Define the regular attributes=] of |namespace| on |namespaceObject| given |realm|.
1. [=Define the regular operations=] of |namespace| on |namespaceObject| given |realm|.
1. For each [=exposed=] [=interface=] |interface| which has the [{{LegacyNamespace}}] extended
- attribute with the identifier of |namespace| as its argument:
+ attribute with the identifier of |namespace| as its argument,
1. Let |id| be |interface|'s [=identifier=].
1. Let |interfaceObject| be the result of [=create an interface object|creating an
interface object=] for |interface| with |id| in |realm|.
@@ -13295,8 +13297,8 @@ The characteristics of a namespace object are described in [[#namespace-object]]
Modules
-Modules are reified as entries in the [=module map=] as [=Synthetic Module
-Records=], allowing them to be imported as ECMAScript modules.
+Modules are reified as entries in the [=module map=] as [=Synthetic Module Records=], allowing
+them to be imported as ECMAScript modules.
To create a synthetic module record for a [=module=] |module| in a [=Realm=] |realm|,
@@ -13305,8 +13307,8 @@ Records=], allowing them to be imported as ECMAScript modules.
1. Assert: |module| is [=exposed=] in |realm|.
1. Let |exports| be « ».
1. [=list/For each=] |member| of |module|'s [=module/module members|members=]:
- 1. Assert: |member| is not annotated with either the [{{Exposed}}]
- or [{{SecureContext}}] extended attributes.
+ 1. Assert: |member| is not annotated with either the [{{Exposed}}] or [{{SecureContext}}]
+ [=extended attributes=].
1. Append the [=identifier=] of |member| to |exports|.
1. Let |moduleRecord| be [=!=] [=CreateSyntheticModule=](|exports|, the following steps,
|realm|, undefined), with the following steps:
@@ -13322,10 +13324,10 @@ Records=], allowing them to be imported as ECMAScript modules.
|member|, |module|, and |realm|.
1. Perform [=!=] [=SetSyntheticModuleExport=](|moduleRecord|, |id|, |method|).
1. Otherwise:
- 1. Assert: |member| is an [=attribute=].
- 1. Assert: The [=module/evaluation steps=] will set each attribute.
+ 1. Assert: |member| is an [=attribute=] or a [=partial interface=].
1. Run the [=module/evaluation steps=] with |module| as [=this module=] in
|realm|, if any are present.
+ 1. Assert: All [=attributes=] have been set to an IDL value of the appropriate type.
1. Return |moduleRecord|.
@@ -13335,8 +13337,8 @@ Records=], allowing them to be imported as ECMAScript modules.
1. Let |map| be the [=module map=] associated with |realm|'s [=relevant settings object=].
1. For each [=module=] |module| that is [=exposed=] in |realm|:
1. Let |url| be |module|'s [=module/url=].
- 1. Let |record| be the result of [=create a synthetic module record=] for |module| in
- |realm|.
+ 1. Let |record| be the result of [=create a synthetic module record|creating a synthetic
+ module record=] for |module| in |realm|.
1. [=map/Set=] |map|[|url|] to |record|.
@@ -13349,13 +13351,12 @@ Records=], allowing them to be imported as ECMAScript modules.
Issue(heycam/webidl#674): Relax this requirement.
1. Let |url| be |module|'s [=module/url=].
1. Let |esValue| be |value| [=converted to an ECMAScript value=].
- 1. If |realm| is not provided, let |realm| be the [=current Realm=].
1. Let |map| be the [=module map=] associated with |realm|'s [=relevant settings object=].
1. Assert: |map|[|url|] [=map/exists=].
1. Let |moduleRecord| be |map|[|url|].
1. Let |identifier| be |attribute|'s [=identifier=].
1. Assert: |moduleRecord|.\[[ExportNames]] [=list/contains=] |identifier|.
- 1. Perform ! [=SetSyntheticModuleExport=](|moduleRecord|, |identifier|, |esValue|).
+ 1. Perform [=!=] [=SetSyntheticModuleExport=](|moduleRecord|, |identifier|, |esValue|).