diff --git a/spec.html b/spec.html index b272c6b8ab9..3baae54b1e0 100644 --- a/spec.html +++ b/spec.html @@ -4162,7 +4162,7 @@

The Reference Record Specification Type

The Reference Record type is used to explain the behaviour of such operators as `delete`, `typeof`, the assignment operators, the `super` keyword and other language features. For example, the left-hand operand of an assignment is expected to produce a Reference Record.

-

A Reference Record is a resolved name or property binding; its fields are defined by .

+

A Reference Record is a resolved name or (possibly not-yet-resolved) property binding; its fields are defined by .

@@ -4178,8 +4178,8 @@

The Reference Record Specification Type

- - + + @@ -4264,6 +4264,9 @@

1. [id="step-getvalue-toobject"] Let _baseObj_ be ? ToObject(_V_.[[Base]]). 1. If IsPrivateReference(_V_) is *true*, then 1. Return ? PrivateGet(_baseObj_, _V_.[[ReferencedName]]). + 1. If _V_.[[ReferencedName]] is neither a String nor a Symbol, then + 1. Let _referencedName_ be ? ToPropertyKey(_V_.[[ReferencedName]]). + 1. Set _V_.[[ReferencedName]] to _referencedName_. 1. Return ? _baseObj_.[[Get]](_V_.[[ReferencedName]], GetThisValue(_V_)). 1. Else, 1. Let _base_ be _V_.[[Base]]. @@ -4295,6 +4298,9 @@

1. [id="step-putvalue-toobject"] Let _baseObj_ be ? ToObject(_V_.[[Base]]). 1. If IsPrivateReference(_V_) is *true*, then 1. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_). + 1. If _V_.[[ReferencedName]] is neither a String nor a Symbol, then + 1. Let _referencedName_ be ? ToPropertyKey(_V_.[[ReferencedName]]). + 1. Set _V_.[[ReferencedName]] to _referencedName_. 1. Let _succeeded_ be ? _baseObj_.[[Set]](_V_.[[ReferencedName]], _W_, GetThisValue(_V_)). 1. If _succeeded_ is *false* and _V_.[[Strict]] is *true*, throw a *TypeError* exception. 1. Return ~unused~. @@ -19147,8 +19153,7 @@

1. Let _propertyNameReference_ be ? Evaluation of _expression_. 1. Let _propertyNameValue_ be ? GetValue(_propertyNameReference_). - 1. Let _propertyKey_ be ? ToPropertyKey(_propertyNameValue_). - 1. Return the Reference Record { [[Base]]: _baseValue_, [[ReferencedName]]: _propertyKey_, [[Strict]]: _strict_, [[ThisValue]]: ~empty~ }. + 1. Return the Reference Record { [[Base]]: _baseValue_, [[ReferencedName]]: _propertyNameValue_, [[Strict]]: _strict_, [[ThisValue]]: ~empty~ }. @@ -19841,6 +19846,9 @@

Runtime Semantics: Evaluation

1. Assert: IsPrivateReference(_ref_) is *false*. 1. If IsSuperReference(_ref_) is *true*, throw a *ReferenceError* exception. 1. [id="step-delete-operator-toobject"] Let _baseObj_ be ? ToObject(_ref_.[[Base]]). + 1. If _ref_.[[ReferencedName]] is neither a String nor a Symbol, then + 1. Let _referencedName_ be ? ToPropertyKey(_ref_.[[ReferencedName]]). + 1. Set _ref_.[[ReferencedName]] to _referencedName_. 1. Let _deleteStatus_ be ? _baseObj_.[[Delete]](_ref_.[[ReferencedName]]). 1. If _deleteStatus_ is *false* and _ref_.[[Strict]] is *true*, throw a *TypeError* exception. 1. Return _deleteStatus_.
[[ReferencedName]]a String, a Symbol, or a Private NameThe name of the binding. Always a String if [[Base]] value is an Environment Record.a String, a Symbol, a Private Name, or an ECMAScript language valueThe name of the binding. Always a String if [[Base]] value is an Environment Record. May temporarily be an ECMAScript language value other than a String or a Symbol in the case of a property reference for which ToPropertyKey has yet to be performed.
[[Strict]]