array-elem-nested-memberexpr-optchain-prop-ref-init.js (2395B)
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/for-in.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) (For..in statement) 7 esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation 8 features: [optional-chaining, destructuring-binding] 9 flags: [generated] 10 negative: 11 phase: parse 12 type: SyntaxError 13 info: | 14 IterationStatement : 15 for ( LeftHandSideExpression of AssignmentExpression ) Statement 16 17 1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« », 18 AssignmentExpression, iterate). 19 2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement, 20 keyResult, assignment, labelSet). 21 22 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation 23 24 [...] 25 4. If destructuring is true and if lhsKind is assignment, then 26 a. Assert: lhs is a LeftHandSideExpression. 27 b. Let assignmentPattern be the parse of the source text corresponding to 28 lhs using AssignmentPattern as the goal symbol. 29 [...] 30 31 Syntax 32 33 AssignmentElement : DestructuringAssignmentTarget Initializer_opt 34 DestructuringAssignmentTarget : LeftHandSideExpression 35 36 Static Semantics: Early Errors 37 38 OptionalExpression: 39 MemberExpression OptionalChain 40 CallExpression OptionalChain 41 OptionalExpression OptionalChain 42 43 OptionalChain: 44 ?. [ Expression ] 45 ?. IdentifierName 46 ?. Arguments 47 ?. TemplateLiteral 48 OptionalChain [ Expression ] 49 OptionalChain .IdentifierName 50 OptionalChain Arguments 51 OptionalChain TemplateLiteral 52 53 DestructuringAssignmentTarget : LeftHandSideExpression 54 55 - It is a Syntax Error if LeftHandSideExpression is neither an ObjectLiteral nor an ArrayLiteral and IsValidSimpleAssignmentTarget(LeftHandSideExpression) is not true. 56 57 Static Semantics: IsValidSimpleAssignmentTarget 58 59 LeftHandSideExpression : OptionalExpression 60 1. Return false. 61 62 ---*/ 63 $DONOTEVALUATE(); 64 var x = {}; 65 66 for ([x?.y = 42] in [[23]]) ;