@@ -3974,7 +3974,7 @@ <h1>The Reference Record Specification Type</h1>
3974
3974
One of:
3975
3975
<ul>
3976
3976
<li>
3977
- any ECMAScript language value except *undefined* or *null* ,
3977
+ any ECMAScript language value,
3978
3978
</li>
3979
3979
<li>
3980
3980
an Environment Record, or
@@ -4018,7 +4018,7 @@ <h1>
4018
4018
<emu-alg>
4019
4019
1. Assert: _V_ is a Reference Record.
4020
4020
1. If _V_.[[Base]] is ~unresolvable~, return *false*.
4021
- 1. If Type( _V_.[[Base]]) is Boolean, String, Symbol, BigInt, Number, or Object, return *true *; otherwise return *false *.
4021
+ 1. If _V_.[[Base]] is an Environment Record, return *false *; otherwise return *true *.
4022
4022
</emu-alg>
4023
4023
</emu-clause>
4024
4024
@@ -4077,7 +4077,7 @@ <h1>
4077
4077
1. If _V_ is not a Reference Record, return _V_.
4078
4078
1. If IsUnresolvableReference(_V_) is *true*, throw a *ReferenceError* exception.
4079
4079
1. If IsPropertyReference(_V_) is *true*, then
4080
- 1. [id="step-getvalue-toobject"] Let _baseObj_ be ! ToObject(_V_.[[Base]]).
4080
+ 1. [id="step-getvalue-toobject"] Let _baseObj_ be ? ToObject(_V_.[[Base]]).
4081
4081
1. If IsPrivateReference(_V_) is *true*, then
4082
4082
1. Return ? PrivateGet(_V_.[[ReferencedName]], _baseObj_).
4083
4083
1. Return ? _baseObj_.[[Get]](_V_.[[ReferencedName]], GetThisValue(_V_)).
@@ -4109,7 +4109,7 @@ <h1>
4109
4109
1. Let _globalObj_ be GetGlobalObject().
4110
4110
1. Return ? Set(_globalObj_, _V_.[[ReferencedName]], _W_, *false*).
4111
4111
1. If IsPropertyReference(_V_) is *true*, then
4112
- 1. [id="step-putvalue-toobject"] Let _baseObj_ be ! ToObject(_V_.[[Base]]).
4112
+ 1. [id="step-putvalue-toobject"] Let _baseObj_ be ? ToObject(_V_.[[Base]]).
4113
4113
1. If IsPrivateReference(_V_) is *true*, then
4114
4114
1. Return ? PrivateSet(_V_.[[ReferencedName]], _baseObj_, _W_).
4115
4115
1. Let _succeeded_ be ? _baseObj_.[[Set]](_V_.[[ReferencedName]], _W_, GetThisValue(_V_)).
@@ -18588,15 +18588,14 @@ <h1>Runtime Semantics: Evaluation</h1>
18588
18588
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
18589
18589
1. Let _baseValue_ be ? GetValue(_baseReference_).
18590
18590
1. If the code matched by this |MemberExpression| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*.
18591
- 1. Return ? EvaluatePropertyAccessWithIdentifierKey(_baseValue_, |IdentifierName|, _strict_).
18591
+ 1. Return ! EvaluatePropertyAccessWithIdentifierKey(_baseValue_, |IdentifierName|, _strict_).
18592
18592
</emu-alg>
18593
18593
<emu-grammar>MemberExpression : MemberExpression `.` PrivateIdentifier</emu-grammar>
18594
18594
<emu-alg>
18595
18595
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
18596
18596
1. Let _baseValue_ be ? GetValue(_baseReference_).
18597
- 1. Let _bv_ be ? RequireObjectCoercible(_baseValue_).
18598
18597
1. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
18599
- 1. Return ! MakePrivateReference(_bv_ , _fieldNameString_).
18598
+ 1. Return ! MakePrivateReference(_baseValue_ , _fieldNameString_).
18600
18599
</emu-alg>
18601
18600
<emu-grammar>CallExpression : CallExpression `[` Expression `]`</emu-grammar>
18602
18601
<emu-alg>
@@ -18610,15 +18609,14 @@ <h1>Runtime Semantics: Evaluation</h1>
18610
18609
1. Let _baseReference_ be the result of evaluating |CallExpression|.
18611
18610
1. Let _baseValue_ be ? GetValue(_baseReference_).
18612
18611
1. If the code matched by this |CallExpression| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*.
18613
- 1. Return ? EvaluatePropertyAccessWithIdentifierKey(_baseValue_, |IdentifierName|, _strict_).
18612
+ 1. Return ! EvaluatePropertyAccessWithIdentifierKey(_baseValue_, |IdentifierName|, _strict_).
18614
18613
</emu-alg>
18615
18614
<emu-grammar>CallExpression : CallExpression `.` PrivateIdentifier</emu-grammar>
18616
18615
<emu-alg>
18617
18616
1. Let _baseReference_ be the result of evaluating |CallExpression|.
18618
18617
1. Let _baseValue_ be ? GetValue(_baseReference_).
18619
- 1. Let _bv_ be ? RequireObjectCoercible(_baseValue_).
18620
18618
1. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
18621
- 1. Return ! MakePrivateReference(_bv_ , _fieldNameString_).
18619
+ 1. Return ! MakePrivateReference(_baseValue_ , _fieldNameString_).
18622
18620
</emu-alg>
18623
18621
</emu-clause>
18624
18622
</emu-clause>
@@ -18636,9 +18634,8 @@ <h1>
18636
18634
<emu-alg>
18637
18635
1. Let _propertyNameReference_ be the result of evaluating _expression_.
18638
18636
1. Let _propertyNameValue_ be ? GetValue(_propertyNameReference_).
18639
- 1. Let _bv_ be ? RequireObjectCoercible(_baseValue_).
18640
18637
1. Let _propertyKey_ be ? ToPropertyKey(_propertyNameValue_).
18641
- 1. Return the Reference Record { [[Base]]: _bv_ , [[ReferencedName]]: _propertyKey_, [[Strict]]: _strict_, [[ThisValue]]: ~empty~ }.
18638
+ 1. Return the Reference Record { [[Base]]: _baseValue_ , [[ReferencedName]]: _propertyKey_, [[Strict]]: _strict_, [[ThisValue]]: ~empty~ }.
18642
18639
</emu-alg>
18643
18640
</emu-clause>
18644
18641
<emu-clause id="sec-evaluate-property-access-with-identifier-key" type="abstract operation" oldids="sec-evaluate-identifier-key-property-access">
@@ -18653,9 +18650,8 @@ <h1>
18653
18650
</dl>
18654
18651
<emu-alg>
18655
18652
1. Assert: _identifierName_ is an |IdentifierName|.
18656
- 1. Let _bv_ be ? RequireObjectCoercible(_baseValue_).
18657
18653
1. Let _propertyNameString_ be StringValue of _identifierName_.
18658
- 1. Return the Reference Record { [[Base]]: _bv_ , [[ReferencedName]]: _propertyNameString_, [[Strict]]: _strict_, [[ThisValue]]: ~empty~ }.
18654
+ 1. Return the Reference Record { [[Base]]: _baseValue_ , [[ReferencedName]]: _propertyNameString_, [[Strict]]: _strict_, [[ThisValue]]: ~empty~ }.
18659
18655
</emu-alg>
18660
18656
</emu-clause>
18661
18657
@@ -18833,8 +18829,7 @@ <h1>
18833
18829
1. Let _env_ be GetThisEnvironment().
18834
18830
1. Assert: _env_.HasSuperBinding() is *true*.
18835
18831
1. Let _baseValue_ be ? _env_.GetSuperBase().
18836
- 1. Let _bv_ be ? RequireObjectCoercible(_baseValue_).
18837
- 1. Return the Reference Record { [[Base]]: _bv_, [[ReferencedName]]: _propertyKey_, [[Strict]]: _strict_, [[ThisValue]]: _actualThis_ }.
18832
+ 1. Return the Reference Record { [[Base]]: _baseValue_, [[ReferencedName]]: _propertyKey_, [[Strict]]: _strict_, [[ThisValue]]: _actualThis_ }.
18838
18833
1. NOTE: This returns a Super Reference Record.
18839
18834
</emu-alg>
18840
18835
</emu-clause>
@@ -18968,13 +18963,12 @@ <h1>Runtime Semantics: ChainEvaluation</h1>
18968
18963
<emu-grammar>OptionalChain : `?.` IdentifierName</emu-grammar>
18969
18964
<emu-alg>
18970
18965
1. If the code matched by this |OptionalChain| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*.
18971
- 1. Return ? EvaluatePropertyAccessWithIdentifierKey(_baseValue_, |IdentifierName|, _strict_).
18966
+ 1. Return ! EvaluatePropertyAccessWithIdentifierKey(_baseValue_, |IdentifierName|, _strict_).
18972
18967
</emu-alg>
18973
18968
<emu-grammar>OptionalChain : `?.` PrivateIdentifier</emu-grammar>
18974
18969
<emu-alg>
18975
- 1. Let _bv_ be ? RequireObjectCoercible(_baseValue_).
18976
18970
1. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
18977
- 1. Return ! MakePrivateReference(_bv_ , _fieldNameString_).
18971
+ 1. Return ! MakePrivateReference(_baseValue_ , _fieldNameString_).
18978
18972
</emu-alg>
18979
18973
<emu-grammar>OptionalChain : OptionalChain Arguments</emu-grammar>
18980
18974
<emu-alg>
@@ -18999,16 +18993,15 @@ <h1>Runtime Semantics: ChainEvaluation</h1>
18999
18993
1. Let _newReference_ be ? ChainEvaluation of _optionalChain_ with arguments _baseValue_ and _baseReference_.
19000
18994
1. Let _newValue_ be ? GetValue(_newReference_).
19001
18995
1. If the code matched by this |OptionalChain| is strict mode code, let _strict_ be *true*; else let _strict_ be *false*.
19002
- 1. Return ? EvaluatePropertyAccessWithIdentifierKey(_newValue_, |IdentifierName|, _strict_).
18996
+ 1. Return ! EvaluatePropertyAccessWithIdentifierKey(_newValue_, |IdentifierName|, _strict_).
19003
18997
</emu-alg>
19004
18998
<emu-grammar>OptionalChain : OptionalChain `.` PrivateIdentifier</emu-grammar>
19005
18999
<emu-alg>
19006
19000
1. Let _optionalChain_ be |OptionalChain|.
19007
19001
1. Let _newReference_ be ? ChainEvaluation of _optionalChain_ with arguments _baseValue_ and _baseReference_.
19008
19002
1. Let _newValue_ be ? GetValue(_newReference_).
19009
- 1. Let _nv_ be ? RequireObjectCoercible(_newValue_).
19010
19003
1. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
19011
- 1. Return ! MakePrivateReference(_nv_ , _fieldNameString_).
19004
+ 1. Return ! MakePrivateReference(_newValue_ , _fieldNameString_).
19012
19005
</emu-alg>
19013
19006
</emu-clause>
19014
19007
</emu-clause>
@@ -19288,7 +19281,7 @@ <h1>Runtime Semantics: Evaluation</h1>
19288
19281
1. If IsPropertyReference(_ref_) is *true*, then
19289
19282
1. Assert: ! IsPrivateReference(_ref_) is *false*.
19290
19283
1. If IsSuperReference(_ref_) is *true*, throw a *ReferenceError* exception.
19291
- 1. [id="step-delete-operator-toobject"] Let _baseObj_ be ! ToObject(_ref_.[[Base]]).
19284
+ 1. [id="step-delete-operator-toobject"] Let _baseObj_ be ? ToObject(_ref_.[[Base]]).
19292
19285
1. Let _deleteStatus_ be ? _baseObj_.[[Delete]](_ref_.[[ReferencedName]]).
19293
19286
1. If _deleteStatus_ is *false* and _ref_.[[Strict]] is *true*, throw a *TypeError* exception.
19294
19287
1. Return _deleteStatus_.
0 commit comments