blob: 0c22acbfbed2d09d8b1e841493173b8e8e8372d8 [file] [log] [blame]
keith_miller@apple.combcc77f22016-07-15 06:03:25 +00001// This file was procedurally generated from the following sources:
2// - src/dstr-binding/ary-ptrn-rest-ary-elem.case
3// - src/dstr-binding/default/var-stmt.template
4/*---
5description: Rest element containing an array BindingElementList pattern (`var` statement)
6esid: sec-variable-statement-runtime-semantics-evaluation
7es6id: 13.3.2.4
8features: [destructuring-binding]
9flags: [generated]
10info: |
11 VariableDeclaration : BindingPattern Initializer
12
13 1. Let rhs be the result of evaluating Initializer.
14 2. Let rval be GetValue(rhs).
15 3. ReturnIfAbrupt(rval).
16 4. Return the result of performing BindingInitialization for
17 BindingPattern passing rval and undefined as arguments.
18
19 13.3.3.6 Runtime Semantics: IteratorBindingInitialization
20
21 BindingRestElement : ... BindingPattern
22
23 1. Let A be ArrayCreate(0).
24 [...]
25 3. Repeat
26 [...]
27 b. If iteratorRecord.[[done]] is true, then
28 i. Return the result of performing BindingInitialization of
29 BindingPattern with A and environment as the arguments.
30 [...]
31
32 13.3.3.6 Runtime Semantics: IteratorBindingInitialization
33
34 SingleNameBinding : BindingIdentifier Initializeropt
35
36 [...]
37 4. If iteratorRecord.[[done]] is false, then
38 a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
39 b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
40 c. ReturnIfAbrupt(next).
41 d. If next is false, set iteratorRecord.[[done]] to true.
42 e. Else,
43 [...]
44 i. Let v be IteratorValue(next).
45 ii. If v is an abrupt completion, set
46 iteratorRecord.[[done]] to true.
47 iii. ReturnIfAbrupt(v).
48 5. If iteratorRecord.[[done]] is true, let v be undefined.
49 [...]
50 8. Return InitializeReferencedBinding(lhs, v).
51---*/
52
53var [...[x, y, z]] = [3, 4, 5];
54
55assert.sameValue(x, 3);
56assert.sameValue(y, 4);
57assert.sameValue(z, 5);