keith_miller@apple.com | bcc77f2 | 2016-07-15 06:03:25 +0000 | [diff] [blame] | 1 | // This file was procedurally generated from the following sources: |
| 2 | // - src/dstr-assignment/array-rest-put-prop-ref.case |
| 3 | // - src/dstr-assignment/default/for-of.template |
| 4 | /*--- |
| 5 | description: The DestructuringAssignmentTarget of an AssignmentElement may be a PropertyReference. (For..of statement) |
| 6 | esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation |
| 7 | es6id: 13.7.5.11 |
| 8 | features: [destructuring-binding] |
| 9 | flags: [generated] |
| 10 | info: | |
| 11 | IterationStatement : |
| 12 | for ( LeftHandSideExpression of AssignmentExpression ) Statement |
| 13 | |
| 14 | 1. Let keyResult be the result of performing ? ForIn/OfHeadEvaluation(« », |
| 15 | AssignmentExpression, iterate). |
| 16 | 2. Return ? ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement, |
| 17 | keyResult, assignment, labelSet). |
| 18 | |
| 19 | 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation |
| 20 | |
| 21 | [...] |
| 22 | 4. If destructuring is true and if lhsKind is assignment, then |
| 23 | a. Assert: lhs is a LeftHandSideExpression. |
| 24 | b. Let assignmentPattern be the parse of the source text corresponding to |
| 25 | lhs using AssignmentPattern as the goal symbol. |
| 26 | [...] |
| 27 | ---*/ |
| 28 | var x = {}; |
| 29 | |
| 30 | var counter = 0; |
| 31 | |
| 32 | for ([...x.y] of [[4, 3, 2]]) { |
| 33 | assert.sameValue(x.y.length, 3); |
| 34 | assert.sameValue(x.y[0], 4); |
| 35 | assert.sameValue(x.y[1], 3); |
| 36 | assert.sameValue(x.y[2], 2); |
| 37 | counter += 1; |
| 38 | } |
| 39 | |
| 40 | assert.sameValue(counter, 1); |