diff --git a/spec.html b/spec.html index c40bd46..3ce2194 100644 --- a/spec.html +++ b/spec.html @@ -180,20 +180,12 @@

Runtime Semantics: Evaluation

ClassElementName[Yield, Await] : PrivateIdentifier - 1. Let _bindingName_ be StringValue of |PrivateIdentifier|. + 1. Let _privateIdentifier_ be StringValue of |PrivateIdentifier|. 1. Let _scope_ be the running execution context's PrivateEnvironment. 1. Let _scopeEnvRec_ be _scope_'s EnvironmentRecord. - 1. Let _field_ be NewPrivateName(_bindingName_). - 1. Perform ! _scopeEnvRec_.InitializeBinding(_bindingName_, _field_). - 1. Assert: _scopeEnvRec_ has a binding for _bindingName_. - 1. If _scopeEnvRec_'s binding for _bindingName_ is uninitialized, - 1. Let _field_ be NewPrivateName(_bindingName_). - 1. Perform ! _scopeEnvRec_.InitializeBinding(_bindingName_, _field_). - 1. Else, - 1. Let _field_ be _scopeEnvRec_.GetBindingValue(_bindingName_). - 1. NOTE: The only case where this may occur is in getter/setter pairs; other duplicates are prohibited as a Syntax Error. - 1. Assert: _field_.[[Description]] is _bindingName_. - 1. Return _field_. + 1. Let _name_ be _scopeEnvRec_.GetBindingValue(_bindingName_). + 1. Assert: _name_.[[Description]] is _privateIdentifier_. + 1. Return _name_. Each time a class declaration executes, distinct internal Private Names are created. This means, that they cannot directly access each other's private state if a method of one is called with the other as a receiver. @@ -284,6 +276,8 @@

Runtime Semantics: ClassDefinitionEvaluation

1. If |ClassBody_opt| is present, then 1. For each element _dn_ of the PrivateBoundIdentifiers of |ClassBody_opt|, 1. Perform _classPrivateEnvRec_.CreateImmutableBinding(_dn_, *true*). + 1. Let _privateName_ be NewPrivateName(_dn_). + 1. Perform ! _classPrivateEnvRec_.InitializeBinding(_dn_, _dn_). 1. If |ClassHeritage_opt| is not present, then 1. Let _protoParent_ be the intrinsic object %ObjectPrototype%. 1. Let _constructorParent_ be the intrinsic object %FunctionPrototype%.