| call-expression-super-no-base.js |
---
esid: prod-OptionalExpression
description: >
should not suppress error if super called on class with no base
info: |
Left-Hand-Side Expressions
OptionalExpression:
SuperCall OptionalChain
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
484 |
- |
| call-expression.js |
---
esid: prod-OptionalExpression
description: >
optional chain on call expression
info: |
Left-Hand-Side Expressions
OptionalExpression:
CallExpression OptionalChain
features: [optional-chaining]
--- |
1423 |
- |
| early-errors-tail-position-null-op-template-string-esi.js |
---
esid: prod-OptionalExpression
description: >
template string passed to tail position of optional chain
info: |
Static Semantics: Early Errors
OptionalChain:
?.TemplateLiteral
OptionalChain TemplateLiteral
It is a Syntax Error if any code matches this production.
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
627 |
- |
| early-errors-tail-position-null-op-template-string.js |
---
esid: prod-OptionalExpression
description: >
template string passed to tail position of optional chain
info: |
Static Semantics: Early Errors
OptionalChain:
?.TemplateLiteral
OptionalChain TemplateLiteral
It is a Syntax Error if any code matches this production.
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
539 |
- |
| early-errors-tail-position-null-optchain-template-string-esi.js |
---
esid: prod-OptionalExpression
description: >
template string passed to tail position of optional chain
info: |
Static Semantics: Early Errors
OptionalChain:
?.TemplateLiteral
OptionalChain TemplateLiteral
It is a Syntax Error if any code matches this production.
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
629 |
- |
| early-errors-tail-position-null-optchain-template-string.js |
---
esid: prod-OptionalExpression
description: >
template string passed to tail position of optional chain
info: |
Static Semantics: Early Errors
OptionalChain:
?.TemplateLiteral
OptionalChain TemplateLiteral
It is a Syntax Error if any code matches this production.
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
541 |
- |
| early-errors-tail-position-op-template-string-esi.js |
---
esid: prod-OptionalExpression
description: >
template string passed to tail position of optional chain
info: |
Static Semantics: Early Errors
OptionalChain:
?.TemplateLiteral
OptionalChain TemplateLiteral
It is a Syntax Error if any code matches this production.
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
650 |
- |
| early-errors-tail-position-op-template-string.js |
---
esid: prod-OptionalExpression
description: >
template string passed to tail position of optional chain
info: |
Static Semantics: Early Errors
OptionalChain:
?.TemplateLiteral
OptionalChain TemplateLiteral
It is a Syntax Error if any code matches this production.
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
562 |
- |
| early-errors-tail-position-optchain-template-string-esi.js |
---
esid: prod-OptionalExpression
description: >
template string passed to tail position of optional chain
info: |
Static Semantics: Early Errors
OptionalChain:
?.TemplateLiteral
OptionalChain TemplateLiteral
It is a Syntax Error if any code matches this production.
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
641 |
- |
| early-errors-tail-position-optchain-template-string.js |
---
esid: prod-OptionalExpression
description: >
template string passed to tail position of optional chain
info: |
Static Semantics: Early Errors
OptionalChain:
?.TemplateLiteral
OptionalChain TemplateLiteral
It is a Syntax Error if any code matches this production.
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
553 |
- |
| eval-optional-call.js |
---
esid: sec-optional-chaining-chain-evaluation
description: optional call invoked on eval function should be indirect eval.
info: |
Runtime Semantics: ChainEvaluation
OptionalChain: ?. Arguments
1. Let thisChain be this OptionalChain.
2. Let tailCall be IsInTailPosition(thisChain).
3. Return ? EvaluateCall(baseValue, baseReference, Arguments, tailCall).
Runtime Semantics: EvaluateCall ( func, ref, arguments, tailPosition )
...
7. Let result be Call(func, thisValue, argList).
...
eval ( x )
...
4. Return ? PerformEval(x, callerRealm, false, false).
Runtime Semantics: PerformEval ( x, callerRealm, strictCaller, direct )
features: [optional-chaining]
--- |
1139 |
- |
| iteration-statement-do.js |
---
esid: prod-OptionalExpression
description: >
optional chain in test portion of do while statement
info: |
IterationStatement
do Statement while (OptionalExpression)
features: [optional-chaining]
--- |
448 |
- |
| iteration-statement-for-await-of.js |
---
esid: prod-OptionalExpression
description: >
optional chain RHS of for await statement
info: |
IterationStatement
for await (LeftHandSideExpression of AssignmentExpression) Statement
features: [optional-chaining]
flags: [async]
includes: [asyncHelpers.js]
--- |
874 |
- |
| iteration-statement-for-in.js |
---
esid: prod-OptionalExpression
description: >
optional chain in test portion of do while statement
info: |
IterationStatement
for (LeftHandSideExpression in Expression) Statement
features: [optional-chaining]
--- |
494 |
- |
| iteration-statement-for-of-type-error.js |
---
esid: prod-OptionalExpression
description: >
optional chain returning undefined in RHS of for of statement
info: |
IterationStatement
for (LeftHandSideExpression of Expression) Statement
features: [optional-chaining]
--- |
675 |
- |
| iteration-statement-for.js |
---
esid: prod-OptionalExpression
description: >
optional chain in init/test/update of for statement
info: |
IterationStatement
for (Expression; Expression; Expression) Statement
features: [optional-chaining]
--- |
1006 |
- |
| iteration-statement-while.js |
---
esid: prod-OptionalExpression
description: >
optional chain in test portion of while statement
info: |
IterationStatement
while (Expression) Statement
features: [optional-chaining]
--- |
430 |
- |
| member-expression-async-identifier.js |
---
esid: prod-OptionalExpression
description: >
optional chain on member expression in async context
info: |
Left-Hand-Side Expressions
OptionalExpression
MemberExpression [PrimaryExpression identifier] OptionalChain
features: [optional-chaining]
flags: [async]
includes: [asyncHelpers.js]
--- |
1143 |
- |
| member-expression-async-literal.js |
---
esid: prod-OptionalExpression
description: >
optional chain on member expression in async context
info: |
Left-Hand-Side Expressions
OptionalExpression:
MemberExpression [PrimaryExpression literal] OptionalChain
features: [optional-chaining]
flags: [async]
includes: [asyncHelpers.js]
--- |
592 |
- |
| member-expression-async-this.js |
---
esid: prod-OptionalExpression
description: >
optional chain on member expression in async context
info: |
Left-Hand-Side Expressions
OptionalExpression:
MemberExpression [PrimaryExpression this] OptionalChain
features: [optional-chaining]
flags: [async]
--- |
567 |
- |
| member-expression.js |
---
esid: prod-OptionalExpression
description: >
optional chain on member expression
info: |
Left-Hand-Side Expressions
OptionalExpression:
MemberExpression OptionalChain
features: [optional-chaining]
--- |
2534 |
- |
| new-target-optional-call.js |
---
esid: prod-OptionalExpression
description: >
optional call invoked on new.target should be equivalent to call
info: |
OptionalExpression
MemberExpression OptionalChain
NewTarget OptionalChain
features: [optional-chaining]
--- |
775 |
- |
| optional-call-preserves-this.js |
---
esid: sec-optional-chaining-chain-evaluation
description: >
optional call must preserve this context, as with a non-optional call
info: |
OptionalChain : ?. Arguments
1. Let thisChain be this OptionalChain.
2. Let tailCall be IsInTailPosition(thisChain).
3. Return ? EvaluateCall(baseValue, baseReference, Arguments, tailCall).
features: [optional-chaining]
--- |
806 |
- |
| optional-chain-async-optional-chain-square-brackets.js |
---
esid: prod-OptionalExpression
description: >
optional chain expansions in an async context
info: |
Left-Hand-Side Expressions
OptionalExpression
MemberExpression [PrimaryExpression Identifier] OptionalChain
OptionalChain OptionalChain ?.[Expression]
features: [optional-chaining]
flags: [async]
includes: [asyncHelpers.js]
--- |
891 |
- |
| optional-chain-async-square-brackets.js |
---
esid: prod-OptionalExpression
description: >
optional chain expansions in an async context
info: |
Left-Hand-Side Expressions
OptionalExpression
MemberExpression [PrimaryExpression Identifier] OptionalChain
OptionalChain ?.[Expression]
features: [optional-chaining]
flags: [async]
includes: [asyncHelpers.js]
--- |
798 |
- |
| optional-chain-expression-optional-expression.js |
---
esid: prod-OptionalExpression
description: >
optional chain bracket notation containing optional expresion
info: |
OptionalChain:
?. [OptionalExpression]
features: [optional-chaining]
--- |
523 |
- |
| optional-chain-prod-arguments.js |
---
esid: prod-OptionalExpression
description: >
Productions for ?. Arguments
info: |
OptionalChain[Yield, Await]:
?. Arguments
features: [optional-chaining]
--- |
528 |
- |
| optional-chain-prod-expression.js |
---
esid: prod-OptionalExpression
description: >
Productions for ?. [Expression]
info: |
OptionalChain:
?.[ Expression ]
features: [optional-chaining]
--- |
1125 |
- |
| optional-chain-prod-identifiername.js |
---
esid: prod-OptionalExpression
description: >
Productions for ?. IdentifierName
info: |
OptionalChain[Yield, Await]:
?. IdentifierName
features: [optional-chaining]
--- |
857 |
- |
| optional-chain.js |
---
esid: prod-OptionalExpression
description: >
various optional chain expansions
info: |
OptionalChain[Yield, Await]:
?.[Expression]
?.IdentifierName
?.Arguments
?.TemplateLiteral
OptionalChain [Expression]
OptionalChain .IdentifierName
OptionalChain Arguments[?Yield, ?Await]
OptionalChain TemplateLiteral
features: [optional-chaining]
--- |
1150 |
- |
| optional-expression.js |
---
esid: prod-OptionalExpression
description: >
optional chain on recursive optional expression
info: |
Left-Hand-Side Expressions
OptionalExpression:
OptionalExpression OptionalChain
features: [optional-chaining]
--- |
644 |
- |
| punctuator-decimal-lookahead.js |
---
esid: prod-OptionalExpression
description: >
ternary operation with decimal does not evaluate as optional chain
info: |
Punctuators
OptionalChainingPunctuator::
?.[lookahead ∉ DecimalDigit]
features: [optional-chaining]
--- |
437 |
- |
| runtime-semantics-evaluation.js |
---
esid: prod-OptionalExpression
description: >
accessing optional value on undefined or null returns undefined.
info: |
If baseValue is undefined or null, then
Return undefined.
features: [optional-chaining]
--- |
549 |
- |
| short-circuiting.js |
---
esid: prod-OptionalExpression
description: >
demonstrate syntax-based short-circuiting.
info: |
If the expression on the LHS of ?. evaluates to null/undefined, the RHS is
not evaluated
features: [optional-chaining]
--- |
575 |
- |
| static-semantics-simple-assignment.js |
---
esid: prod-OptionalExpression
description: >
an optional expression cannot be target of assignment
info: |
Static Semantics: IsValidSimpleAssignmentTarget
LeftHandSideExpression:
OptionalExpression
Return false.
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
492 |
- |
| super-property-optional-call.js |
---
esid: prod-OptionalExpression
description: >
optional call invoked on super method should be equivalent to call
info: |
OptionalExpression
MemberExpression OptionalChain
SuperProperty OptionalChain
features: [optional-chaining]
--- |
657 |
- |
| update-expression-postfix.js |
---
esid: prod-OptionalExpression
description: >
optional chaining is forbidden in write contexts
info: |
UpdateExpression[Yield, Await]:
LeftHandSideExpression++
LeftHandSideExpression--
++UnaryExpression
--UnaryExpression
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
522 |
- |
| update-expression-prefix.js |
---
esid: prod-OptionalExpression
description: >
optional chaining is forbidden in write contexts
info: |
UpdateExpression[Yield, Await]:
LeftHandSideExpression++
LeftHandSideExpression--
++UnaryExpression
--UnaryExpression
features: [optional-chaining]
negative:
phase: parse
type: SyntaxError
--- |
514 |
- |