diff --git a/spec.html b/spec.html index 652ddce78b..2211e5550b 100644 --- a/spec.html +++ b/spec.html @@ -10199,6 +10199,72 @@
Each Declarative Environment Record is associated with an ECMAScript program scope containing variable, constant, let, class, module, import, and/or function declarations. A Declarative Environment Record binds the set of identifiers defined by the declarations contained within its scope.
+Declarative Environment Records have the additional fields listed in
+ Field Name + | ++ Value + | ++ Meaning + | +
---|---|---|
+ [[Bindings]] + | ++ a List of DeclarativeBindings + | ++ Satisfies the invariant that no two records in [[Bindings]] have the same [[BoundName]]. + | +
A DeclarativeBinding is either a SimpleDeclarativeBinding or an ImportDeclarativeBinding. SimpleDeclarativeBindings can appear in any Declarative Environment Record, but ImportDeclarativeBindings can only appear in a Module Environment Record.
+ +A SimpleDeclarativeBinding has the following fields:
+Field Name | +Value | +Meaning | +
---|---|---|
[[BoundName]] | +a String | +the name being bound. | +
[[BoundValue]] | +an ECMAScript language value or ~uninitialized~ | +the value that the name is bound to. | +
[[IsMutable]] | +a Boolean | +if *true*, indicates that the binding is mutable. | +
[[IsDeletable]] | +a Boolean | +if *true*, indicates that the binding may be deleted by a subsequent DeleteBinding call. | +
[[IsStrict]] | +a Boolean | +if *true*, indicates that the binding is a strict binding. | +
The behaviour of the concrete specification methods for Declarative Environment Records is defined by the following algorithms.
The [[Bindings]] of a Module Environment Record can include both SimpleDeclarativeBindings and ImportDeclarativeBindings. An ImportDeclarativeBinding has the following fields:
+Field Name | +Value | +Meaning | +
---|---|---|
[[BoundName]] | +a String | +the name being bound. | +
[[TargetModuleRec]] | +a Module Record | +the imported module that provides the binding. | +
[[TargetName]] | +a String | +the name of a binding that exists in the target module. | +
The behaviour of the additional concrete specification methods for Module Environment Records are defined by the following algorithms:
_S_ will always be *true* because a |Module| is always strict mode code.
@@ -11459,9 +11564,10 @@During BlockDeclarationInstantiation the following steps are performed in place of step