browser.js |
|
0 |
left-hand-side-private-reference-accessor-property-and.js |
---
description: Logical-and assignment with target being a private reference (to an accessor property with getter and setter)
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
...
5.c. Let _setter_ be _entry_.[[Set]].
d. Perform ? Call(_setter_, _O_, « _value_ »).
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression &&= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *false*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
2151 |
left-hand-side-private-reference-accessor-property-nullish.js |
---
description: Nullish-coalescing assignment with target being a private reference (to an accessor property with getter and setter)
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
...
5.c. Let _setter_ be _entry_.[[Set]].
d. Perform ? Call(_setter_, _O_, « _value_ »).
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ??= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. If _lval_ is neither *undefined* nor *null*, return _lval_.
...
6. Perform ? PutValue(_lref_, _rval_).
7. Return _rval_.
--- |
2127 |
left-hand-side-private-reference-accessor-property-or.js |
---
description: Logical-or assignment with target being a private reference (to an accessor property with getter and setter)
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
...
5.c. Let _setter_ be _entry_.[[Set]].
d. Perform ? Call(_setter_, _O_, « _value_ »).
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ||= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *true*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
2146 |
left-hand-side-private-reference-accessor-property-short-circuit-and.js |
---
description: Logical-and assignment with target being a private reference (to an accessor property with getter and setter (short-circuit version))
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
...
5.c. Let _setter_ be _entry_.[[Set]].
d. Perform ? Call(_setter_, _O_, « _value_ »).
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression &&= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *false*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
2204 |
left-hand-side-private-reference-accessor-property-short-circuit-nullish.js |
---
description: Nullish-coalescing assignment with target being a private reference (to an accessor property with getter and setter (short-circuit version))
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
...
5.c. Let _setter_ be _entry_.[[Set]].
d. Perform ? Call(_setter_, _O_, « _value_ »).
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ??= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. If _lval_ is neither *undefined* nor *null*, return _lval_.
...
6. Perform ? PutValue(_lref_, _rval_).
7. Return _rval_.
--- |
2184 |
left-hand-side-private-reference-accessor-property-short-circuit-or.js |
---
description: Logical-or assignment with target being a private reference (to an accessor property with getter and setter (short-circuit version))
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
...
5.c. Let _setter_ be _entry_.[[Set]].
d. Perform ? Call(_setter_, _O_, « _value_ »).
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ||= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *true*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
2199 |
left-hand-side-private-reference-data-property-and.js |
---
description: Logical-and assignment with target being a private reference (to a field)
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
3. If _entry_.[[Kind]] is ~field~, then
a. Set _entry_.[[Value]] to _value_.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression &&= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *false*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
1919 |
left-hand-side-private-reference-data-property-nullish.js |
---
description: Nullish-coalescing assignment with target being a private reference (to a field)
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
3. If _entry_.[[Kind]] is ~field~, then
a. Set _entry_.[[Value]] to _value_.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ??= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. If _lval_ is neither *undefined* nor *null*, return _lval_.
...
6. Perform ? PutValue(_lref_, _rval_).
7. Return _rval_.
--- |
1895 |
left-hand-side-private-reference-data-property-or.js |
---
description: Logical-or assignment with target being a private reference (to a field)
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
3. If _entry_.[[Kind]] is ~field~, then
a. Set _entry_.[[Value]] to _value_.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ||= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *true*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
1914 |
left-hand-side-private-reference-data-property-short-circuit-and.js |
---
description: Logical-and assignment with target being a private reference (to a field (short-circuit version))
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
3. If _entry_.[[Kind]] is ~field~, then
a. Set _entry_.[[Value]] to _value_.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression &&= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *false*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
1974 |
left-hand-side-private-reference-data-property-short-circuit-nullish.js |
---
description: Nullish-coalescing assignment with target being a private reference (to a field (short-circuit version))
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
3. If _entry_.[[Kind]] is ~field~, then
a. Set _entry_.[[Value]] to _value_.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ??= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. If _lval_ is neither *undefined* nor *null*, return _lval_.
...
6. Perform ? PutValue(_lref_, _rval_).
7. Return _rval_.
--- |
1954 |
left-hand-side-private-reference-data-property-short-circuit-or.js |
---
description: Logical-or assignment with target being a private reference (to a field (short-circuit version))
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
3. If _entry_.[[Kind]] is ~field~, then
a. Set _entry_.[[Value]] to _value_.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ||= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *true*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
1969 |
left-hand-side-private-reference-method-and.js |
---
description: Logical-and assignment with target being a private reference (to a private method)
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
4. Else if _entry_.[[Kind]] is ~method~, then
a. Throw a *TypeError* exception.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression &&= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *false*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
1818 |
left-hand-side-private-reference-method-short-circuit-nullish.js |
---
description: Nullish-coalescing assignment with target being a private reference (to a private method (short-circuit version))
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
4. Else if _entry_.[[Kind]] is ~method~, then
a. Throw a *TypeError* exception.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ??= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. If _lval_ is neither *undefined* nor *null*, return _lval_.
...
6. Perform ? PutValue(_lref_, _rval_).
7. Return _rval_.
--- |
2036 |
left-hand-side-private-reference-method-short-circuit-or.js |
---
description: Logical-or assignment with target being a private reference (to a private method (short-circuit version))
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
4. Else if _entry_.[[Kind]] is ~method~, then
a. Throw a *TypeError* exception.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ||= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *true*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
2045 |
left-hand-side-private-reference-readonly-accessor-property-and.js |
---
description: Logical-and assignment with target being a private reference (to an accessor property with getter)
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
b. If _entry_.[[Set]] is *undefined*, throw a *TypeError* exception.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression &&= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *false*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
1861 |
left-hand-side-private-reference-readonly-accessor-property-nullish.js |
---
description: Nullish-coalescing assignment with target being a private reference (to an accessor property with getter)
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
b. If _entry_.[[Set]] is *undefined*, throw a *TypeError* exception.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ??= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. If _lval_ is neither *undefined* nor *null*, return _lval_.
...
6. Perform ? PutValue(_lref_, _rval_).
7. Return _rval_.
--- |
1845 |
left-hand-side-private-reference-readonly-accessor-property-or.js |
---
description: Logical-or assignment with target being a private reference (to an accessor property with getter)
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
b. If _entry_.[[Set]] is *undefined*, throw a *TypeError* exception.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ||= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *true*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
1858 |
left-hand-side-private-reference-readonly-accessor-property-short-circuit-and.js |
---
description: Logical-and assignment with target being a private reference (to an accessor property with getter (short-circuit version))
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
b. If _entry_.[[Set]] is *undefined*, throw a *TypeError* exception.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression &&= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *false*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
2003 |
left-hand-side-private-reference-readonly-accessor-property-short-circuit-nullish.js |
---
description: Nullish-coalescing assignment with target being a private reference (to an accessor property with getter (short-circuit version))
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
b. If _entry_.[[Set]] is *undefined*, throw a *TypeError* exception.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ??= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. If _lval_ is neither *undefined* nor *null*, return _lval_.
...
6. Perform ? PutValue(_lref_, _rval_).
7. Return _rval_.
--- |
1983 |
left-hand-side-private-reference-readonly-accessor-property-short-circuit-or.js |
---
description: Logical-or assignment with target being a private reference (to an accessor property with getter (short-circuit version))
esid: sec-assignment-operators-runtime-semantics-evaluation
features: [class-fields-private, logical-assignment-operators]
flags: [generated]
info: |
sec-property-accessors-runtime-semantics-evaluation
MemberExpression : MemberExpression `.` PrivateIdentifier
1. Let _baseReference_ be the result of evaluating |MemberExpression|.
2. Let _baseValue_ be ? GetValue(_baseReference_).
3. Let _fieldNameString_ be the StringValue of |PrivateIdentifier|.
4. Return ! MakePrivateReference(_baseValue_, _fieldNameString_).
PutValue (V, W)
...
5.b. If IsPrivateReference(_V_) is *true*, then
i. Return ? PrivateSet(_baseObj_, _V_.[[ReferencedName]], _W_).
PrivateSet (O, P, value)
...
5.a. Assert: _entry_.[[Kind]] is ~accessor~.
b. If _entry_.[[Set]] is *undefined*, throw a *TypeError* exception.
sec-assignment-operators-runtime-semantics-evaluation
AssignmentExpression : LeftHandSideExpression ||= AssignmentExpression
1. Let _lref_ be the result of evaluating |LeftHandSideExpression|.
2. Let _lval_ be ? GetValue(_lref_).
3. Let _lbool_ be ! ToBoolean(_lval_).
4. If _lbool_ is *true*, return _lval_.
...
7. Perform ? PutValue(_lref_, _rval_).
8. Return _rval_.
--- |
1998 |
lgcl-and-arguments-strict-strict.js |
---
esid: sec-assignment-operators
description: >
Strict Mode - SyntaxError is thrown if the identifier arguments
appear as the LeftHandSideExpression of a Logical Assignment
operator(&&=)
flags: [onlyStrict]
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
526 |
lgcl-and-assignment-operator-bigint.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: Logical And Assignment Operator
features: [BigInt, logical-assignment-operators]
info: |
AssignmentExpression:
LeftHandSideExpression &&= AssignmentExpression
1. Let lref be the result of evaluating LeftHandSideExpression.
2. Let lval be ? GetValue(lref).
3. Let lbool be ! ToBoolean(lval).
4. If lbool is false, return lval.
5. Let rref be the result of evaluating AssignmentExpression.
6. Let rval be ? GetValue(rref).
7. Perform ? PutValue(lref, rval).
8. Return rval.
--- |
947 |
lgcl-and-assignment-operator-lhs-before-rhs.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
The LeftHandSideExpression is evaluated before the AssignmentExpression.
features: [logical-assignment-operators]
--- |
1328 |
lgcl-and-assignment-operator-namedevaluation-arrow-function.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: NamedEvaluation of Logical And Assignment
info: |
AssignmentExpression:
LeftHandSideExpression &&= AssignmentExpression
5. If IsAnonymousFunctionDefinition(AssignmentExpression) and IsIdentifierRef of LeftHandSideExpression are both true, then
a. Let rval be NamedEvaluation of AssignmentExpression with argument GetReferencedName(lref).
features: [logical-assignment-operators]
--- |
729 |
lgcl-and-assignment-operator-namedevaluation-class-expression.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: NamedEvaluation of Logical And Assignment
info: |
AssignmentExpression:
LeftHandSideExpression &&= AssignmentExpression
5. If IsAnonymousFunctionDefinition(AssignmentExpression) and IsIdentifierRef of LeftHandSideExpression are both true, then
a. Let rval be NamedEvaluation of AssignmentExpression with argument GetReferencedName(lref).
features: [logical-assignment-operators]
--- |
729 |
lgcl-and-assignment-operator-namedevaluation-function.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: NamedEvaluation of Logical And Assignment
info: |
AssignmentExpression:
LeftHandSideExpression &&= AssignmentExpression
5. If IsAnonymousFunctionDefinition(AssignmentExpression) and IsIdentifierRef of LeftHandSideExpression are both true, then
a. Let rval be NamedEvaluation of AssignmentExpression with argument GetReferencedName(lref).
features: [logical-assignment-operators]
--- |
734 |
lgcl-and-assignment-operator-no-set-put-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is thrown if the LeftHandSide of a Logical
Assignment operator(&&=) is a reference to a data property with the
attribute value {[[Set]]:undefined} and PutValue step is reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
792 |
lgcl-and-assignment-operator-no-set-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is not thrown if the LeftHandSide of a Logical
Assignment operator(&&=) is a reference to a data property with the
attribute value {[[Set]]:undefined} and PutValue step is not reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
746 |
lgcl-and-assignment-operator-non-extensible-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is not thrown if The LeftHandSide of a Logical
Assignment operator(&&=) is a reference to a non-existent property of an
object whose [[Extensible]] internal property is false.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
647 |
lgcl-and-assignment-operator-non-simple-lhs.js |
---
esid: sec-assignment-operators-static-semantics-early-errors
description: >
It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is
not simple.
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
489 |
lgcl-and-assignment-operator-non-writeable-put-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is thrown if the LeftHandSide of a Logical
Assignment operator(&&=) is a reference to a data property with the
attribute value {[[Writable]]:false} and PutValue step is reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
767 |
lgcl-and-assignment-operator-non-writeable-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is not thrown if the LeftHandSide of a Logical
Assignment operator(&&=) is a reference to a data property with the
attribute value {[[Writable]]:false} and PutValue step is not reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
721 |
lgcl-and-assignment-operator-unresolved-lhs-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
ReferenceError is thrown if the LeftHandSideExpression of a Logical
Assignment operator(&&=) evaluates to an unresolvable reference
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
529 |
lgcl-and-assignment-operator-unresolved-rhs-put.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
ReferenceError is thrown if the AssignmentExpression of a Logical
Assignment operator(&&=) evaluates to an unresolvable reference and the
AssignmentExpression is evaluated.
features: [logical-assignment-operators]
--- |
597 |
lgcl-and-assignment-operator-unresolved-rhs.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
ReferenceError is not thrown if the AssignmentExpression of a Logical
Assignment operator(&&=) evaluates to an unresolvable reference and the
AssignmentExpression is not evaluated.
features: [logical-assignment-operators]
--- |
549 |
lgcl-and-assignment-operator.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: Logical And Assignment Operator
info: |
AssignmentExpression:
LeftHandSideExpression &&= AssignmentExpression
1. Let lref be the result of evaluating LeftHandSideExpression.
2. Let lval be ? GetValue(lref).
3. Let lbool be ! ToBoolean(lval).
4. If lbool is false, return lval.
5. Let rref be the result of evaluating AssignmentExpression.
6. Let rval be ? GetValue(rref).
7. Perform ? PutValue(lref, rval).
8. Return rval.
features: [logical-assignment-operators]
--- |
1927 |
lgcl-and-eval-strict-strict.js |
---
esid: sec-assignment-operators
description: >
Strict Mode - SyntaxError is thrown if the identifier eval appear
as the LeftHandSideExpression of a Logical Assignment operator(&&=)
flags: [onlyStrict]
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
512 |
lgcl-and-non-simple.js |
---
esid: sec-assignment-operators-static-semantics-early-errors
info: |
It is an early Syntax Error if AssignmentTargetType of
LeftHandSideExpression is invalid or strict.
description: Logical "&&=" assignment with non-simple target
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
524 |
lgcl-and-whitespace.js |
---
info: |
White Space and Line Terminator between LeftHandSideExpression and "@="
or between "@=" and AssignmentExpression are allowed
esid: sec-assignment-operators
description: Checking by evaluating expression "x[...]&&=[...]y"
features: [logical-assignment-operators]
--- |
1668 |
lgcl-nullish-arguments-strict-strict.js |
---
esid: sec-assignment-operators
description: >
Strict Mode - SyntaxError is thrown if the identifier arguments
appear as the LeftHandSideExpression of a Logical Assignment
operator(??=)
flags: [onlyStrict]
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
526 |
lgcl-nullish-assignment-operator-bigint.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: Logical Nullish Assignment Operator
features: [BigInt, logical-assignment-operators]
info: |
AssignmentExpression:
LeftHandSideExpression ??= AssignmentExpression
1. Let lref be the result of evaluating LeftHandSideExpression.
2. Let lval be ? GetValue(lref).
3. If lval is neither undefined nor null, return lval.
4. Let rref be the result of evaluating AssignmentExpression.
5. Let rval be ? GetValue(rref).
6. Perform ? PutValue(lref, rval).
7. Return rval.
--- |
932 |
lgcl-nullish-assignment-operator-lhs-before-rhs.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
The LeftHandSideExpression is evaluated before the AssignmentExpression.
features: [logical-assignment-operators]
--- |
1312 |
lgcl-nullish-assignment-operator-namedevaluation-arrow-function.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: NamedEvaluation of Logical Nullish Assignment
info: |
AssignmentExpression:
LeftHandSideExpression ??= AssignmentExpression
4. If IsAnonymousFunctionDefinition(AssignmentExpression) and IsIdentifierRef of LeftHandSideExpression are both true, then
a. Let rval be NamedEvaluation of AssignmentExpression with argument GetReferencedName(lref).
features: [logical-assignment-operators]
--- |
741 |
lgcl-nullish-assignment-operator-namedevaluation-class-expression.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: NamedEvaluation of Logical Nullish Assignment
info: |
AssignmentExpression:
LeftHandSideExpression ??= AssignmentExpression
4. If IsAnonymousFunctionDefinition(AssignmentExpression) and IsIdentifierRef of LeftHandSideExpression are both true, then
a. Let rval be NamedEvaluation of AssignmentExpression with argument GetReferencedName(lref).
features: [logical-assignment-operators]
--- |
741 |
lgcl-nullish-assignment-operator-namedevaluation-function.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: NamedEvaluation of Logical Nullish Assignment
info: |
AssignmentExpression:
LeftHandSideExpression ??= AssignmentExpression
4. If IsAnonymousFunctionDefinition(AssignmentExpression) and IsIdentifierRef of LeftHandSideExpression are both true, then
a. Let rval be NamedEvaluation of AssignmentExpression with argument GetReferencedName(lref).
features: [logical-assignment-operators]
--- |
746 |
lgcl-nullish-assignment-operator-no-set-put-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is thrown if the LeftHandSide of a Logical
Assignment operator(??=) is a reference to a data property with the
attribute value {[[Set]]:undefined} and PutValue step is reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
808 |
lgcl-nullish-assignment-operator-no-set-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is not thrown if the LeftHandSide of a Logical
Assignment operator(??=) is a reference to a data property with the
attribute value {[[Set]]:undefined} and PutValue step is not reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
746 |
lgcl-nullish-assignment-operator-non-extensible-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is thrown if The LeftHandSide of a Logical
Assignment operator(??=) is a reference to a non-existent property
of an object whose [[Extensible]] internal property is false.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
687 |
lgcl-nullish-assignment-operator-non-simple-lhs.js |
---
esid: sec-assignment-operators-static-semantics-early-errors
description: >
It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is
not simple.
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
489 |
lgcl-nullish-assignment-operator-non-writeable-put-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is thrown if the LeftHandSide of a Logical
Assignment operator(??=) is a reference to a data property with the
attribute value {[[Writable]]:false} and PutValue step is reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
783 |
lgcl-nullish-assignment-operator-non-writeable-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is not thrown if the LeftHandSide of a Logical
Assignment operator(??=) is a reference to a data property with the
attribute value {[[Writable]]:false} and PutValue step is not reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
721 |
lgcl-nullish-assignment-operator-unresolved-lhs-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
ReferenceError is thrown if the LeftHandSideExpression of a Logical
Assignment operator(??=) evaluates to an unresolvable reference
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
529 |
lgcl-nullish-assignment-operator-unresolved-rhs-put.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
ReferenceError is thrown if the AssignmentExpression of a Logical
Assignment operator(??=) evaluates to an unresolvable reference and the
AssignmentExpression is evaluated.
features: [logical-assignment-operators]
--- |
613 |
lgcl-nullish-assignment-operator-unresolved-rhs.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
ReferenceError is not thrown if the AssignmentExpression of a Logical
Assignment operator(??=) evaluates to an unresolvable reference and the
AssignmentExpression is not evaluated.
features: [logical-assignment-operators]
--- |
549 |
lgcl-nullish-assignment-operator.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: Logical Nullish Assignment Operator
info: |
AssignmentExpression:
LeftHandSideExpression ??= AssignmentExpression
1. Let lref be the result of evaluating LeftHandSideExpression.
2. Let lval be ? GetValue(lref).
3. If lval is neither undefined nor null, return lval.
4. Let rref be the result of evaluating AssignmentExpression.
5. Let rval be ? GetValue(rref).
6. Perform ? PutValue(lref, rval).
7. Return rval.
features: [logical-assignment-operators]
--- |
1919 |
lgcl-nullish-eval-strict-strict.js |
---
esid: sec-assignment-operators
description: >
Strict Mode - SyntaxError is thrown if the identifier eval appear
as the LeftHandSideExpression of a Logical Assignment operator(??=)
flags: [onlyStrict]
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
512 |
lgcl-nullish-non-simple.js |
---
esid: sec-assignment-operators-static-semantics-early-errors
info: |
It is an early Syntax Error if AssignmentTargetType of
LeftHandSideExpression is invalid or strict.
description: Logical "??=" assignment with non-simple target
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
524 |
lgcl-nullish-whitespace.js |
---
info: |
White Space and Line Terminator between LeftHandSideExpression and "@="
or between "@=" and AssignmentExpression are allowed
esid: sec-assignment-operators
description: Checking by evaluating expression "x[...]??=[...]y"
features: [logical-assignment-operators]
--- |
1698 |
lgcl-or-arguments-strict-strict.js |
---
esid: sec-assignment-operators
description: >
Strict Mode - SyntaxError is thrown if the identifier arguments
appear as the LeftHandSideExpression of a Logical Assignment
operator(||=)
flags: [onlyStrict]
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
526 |
lgcl-or-assignment-operator-bigint.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: Logical Or Assignment Operator
features: [BigInt, logical-assignment-operators]
info: |
AssignmentExpression:
LeftHandSideExpression ||= AssignmentExpression
1. Let lref be the result of evaluating LeftHandSideExpression.
2. Let lval be ? GetValue(lref).
3. Let lbool be ! ToBoolean(lval).
4. If lbool is true, return lval.
5. Let rref be the result of evaluating AssignmentExpression.
6. Let rval be ? GetValue(rref).
7. Perform ? PutValue(lref, rval).
8. Return rval.
--- |
945 |
lgcl-or-assignment-operator-lhs-before-rhs.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
The LeftHandSideExpression is evaluated before the AssignmentExpression.
features: [logical-assignment-operators]
--- |
1312 |
lgcl-or-assignment-operator-namedevaluation-arrow-function.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: NamedEvaluation of Logical Or Assignment
info: |
AssignmentExpression:
LeftHandSideExpression ||= AssignmentExpression
5. If IsAnonymousFunctionDefinition(AssignmentExpression) and IsIdentifierRef of LeftHandSideExpression are both true, then
a. Let rval be NamedEvaluation of AssignmentExpression with argument GetReferencedName(lref).
features: [logical-assignment-operators]
--- |
728 |
lgcl-or-assignment-operator-namedevaluation-class-expression.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: NamedEvaluation of Logical Or Assignment
info: |
AssignmentExpression:
LeftHandSideExpression ||= AssignmentExpression
5. If IsAnonymousFunctionDefinition(AssignmentExpression) and IsIdentifierRef of LeftHandSideExpression are both true, then
a. Let rval be NamedEvaluation of AssignmentExpression with argument GetReferencedName(lref).
features: [logical-assignment-operators]
--- |
728 |
lgcl-or-assignment-operator-namedevaluation-function.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: NamedEvaluation of Logical Or Assignment
info: |
AssignmentExpression:
LeftHandSideExpression ||= AssignmentExpression
5. If IsAnonymousFunctionDefinition(AssignmentExpression) and IsIdentifierRef of LeftHandSideExpression are both true, then
a. Let rval be NamedEvaluation of AssignmentExpression with argument GetReferencedName(lref).
features: [logical-assignment-operators]
--- |
733 |
lgcl-or-assignment-operator-no-set-put-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is thrown if the LeftHandSide of a Logical
Assignment operator(||=) is a reference to a data property with the
attribute value {[[Set]]:undefined} and PutValue step is reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
792 |
lgcl-or-assignment-operator-no-set-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is not thrown if the LeftHandSide of a Logical
Assignment operator(||=) is a reference to a data property with the
attribute value {[[Set]]:undefined} and PutValue step is not reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
746 |
lgcl-or-assignment-operator-non-extensible-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is thrown if The LeftHandSide of a Logical
Assignment operator(||=) is a reference to a non-existent property
of an object whose [[Extensible]] internal property is false.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
687 |
lgcl-or-assignment-operator-non-simple-lhs.js |
---
esid: sec-assignment-operators-static-semantics-early-errors
description: >
It is a Syntax Error if AssignmentTargetType of LeftHandSideExpression is
not simple.
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
489 |
lgcl-or-assignment-operator-non-writeable-put-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is thrown if the LeftHandSide of a Logical
Assignment operator(||=) is a reference to a data property with the
attribute value {[[Writable]]:false} and PutValue step is reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
767 |
lgcl-or-assignment-operator-non-writeable-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
Strict Mode - TypeError is not thrown if the LeftHandSide of a Logical
Assignment operator(||=) is a reference to a data property with the
attribute value {[[Writable]]:false} and PutValue step is not reached.
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
721 |
lgcl-or-assignment-operator-unresolved-lhs-strict.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
ReferenceError is thrown if the LeftHandSideExpression of a Logical
Assignment operator(||=) evaluates to an unresolvable reference
flags: [onlyStrict]
features: [logical-assignment-operators]
--- |
529 |
lgcl-or-assignment-operator-unresolved-rhs-put.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
ReferenceError is thrown if the AssignmentExpression of a Logical
Assignment operator(||=) evaluates to an unresolvable reference and the
AssignmentExpression is evaluated.
features: [logical-assignment-operators]
--- |
597 |
lgcl-or-assignment-operator-unresolved-rhs.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: >
ReferenceError is not thrown if the AssignmentExpression of a Logical
Assignment operator(||=) evaluates to an unresolvable reference and the
AssignmentExpression is not evaluated.
features: [logical-assignment-operators]
--- |
549 |
lgcl-or-assignment-operator.js |
---
esid: sec-assignment-operators-runtime-semantics-evaluation
description: Logical Or Assignment Operator
info: |
AssignmentExpression:
LeftHandSideExpression ||= AssignmentExpression
1. Let lref be the result of evaluating LeftHandSideExpression.
2. Let lval be ? GetValue(lref).
3. Let lbool be ! ToBoolean(lval).
4. If lbool is true, return lval.
5. Let rref be the result of evaluating AssignmentExpression.
6. Let rval be ? GetValue(rref).
7. Perform ? PutValue(lref, rval).
8. Return rval.
features: [logical-assignment-operators]
--- |
1917 |
lgcl-or-eval-strict-strict.js |
---
esid: sec-assignment-operators
description: >
Strict Mode - SyntaxError is thrown if the identifier eval appear
as the LeftHandSideExpression of a Logical Assignment operator(||=)
flags: [onlyStrict]
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
512 |
lgcl-or-non-simple.js |
---
esid: sec-assignment-operators-static-semantics-early-errors
info: |
It is an early Syntax Error if AssignmentTargetType of
LeftHandSideExpression is invalid or strict.
description: Logical "||=" assignment with non-simple target
negative:
phase: parse
type: SyntaxError
features: [logical-assignment-operators]
--- |
524 |
lgcl-or-whitespace.js |
---
info: |
White Space and Line Terminator between LeftHandSideExpression and "@="
or between "@=" and AssignmentExpression are allowed
esid: sec-assignment-operators
description: Checking by evaluating expression "x[...]||=[...]y"
features: [logical-assignment-operators]
--- |
1668 |
shell.js |
|
0 |