array-elem-nested-memberexpr-optchain-prop-ref-init.js (2016B)
1 // |reftest| error:SyntaxError 2 // This file was procedurally generated from the following sources: 3 // - src/dstr-assignment/array-elem-nested-memberexpr-optchain-prop-ref-init.case 4 // - src/dstr-assignment/syntax/assignment-expr.template 5 /*--- 6 description: It is a Syntax Error if LeftHandSideExpression of an DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral and AssignmentTargetType(LeftHandSideExpression) is not simple Using Object (MemberExpression OptionalChain .IdentifierName Initializer) (AssignmentExpression) 7 esid: sec-variable-statement-runtime-semantics-evaluation 8 features: [optional-chaining, destructuring-binding] 9 flags: [generated] 10 negative: 11 phase: parse 12 type: SyntaxError 13 info: | 14 VariableDeclaration : BindingPattern Initializer 15 16 1. Let rhs be the result of evaluating Initializer. 17 2. Let rval be GetValue(rhs). 18 3. ReturnIfAbrupt(rval). 19 4. Return the result of performing BindingInitialization for 20 BindingPattern passing rval and undefined as arguments. 21 22 Syntax 23 24 AssignmentElement : DestructuringAssignmentTarget Initializer_opt 25 DestructuringAssignmentTarget : LeftHandSideExpression 26 27 Static Semantics: Early Errors 28 29 OptionalExpression: 30 MemberExpression OptionalChain 31 CallExpression OptionalChain 32 OptionalExpression OptionalChain 33 34 OptionalChain: 35 ?. [ Expression ] 36 ?. IdentifierName 37 ?. Arguments 38 ?. TemplateLiteral 39 OptionalChain [ Expression ] 40 OptionalChain .IdentifierName 41 OptionalChain Arguments 42 OptionalChain TemplateLiteral 43 44 DestructuringAssignmentTarget : LeftHandSideExpression 45 46 - It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and IsValidSimpleAssignmentTarget(LeftHandSideExpression) is not true. 47 48 Static Semantics: IsValidSimpleAssignmentTarget 49 50 LeftHandSideExpression : OptionalExpression 51 1. Return false. 52 53 ---*/ 54 $DONOTEVALUATE(); 55 var x = {}; 56 57 0, [x?.y = 42] = [23];