blob: 601ef149ab8a574fa7cea88ac4e03a7ecf171130 [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-name-iter-val.case
3// - src/dstr-binding/default/func-expr.template
4/*---
5description: SingleNameBinding with normal value iteration (function expression)
6esid: sec-function-definitions-runtime-semantics-evaluation
7es6id: 14.1.20
8features: [destructuring-binding]
9flags: [generated]
10info: |
11 FunctionExpression : function ( FormalParameters ) { FunctionBody }
12
13 [...]
14 3. Let closure be FunctionCreate(Normal, FormalParameters, FunctionBody,
15 scope, strict).
16 [...]
17
18 9.2.1 [[Call]] ( thisArgument, argumentsList)
19
20 [...]
21 7. Let result be OrdinaryCallEvaluateBody(F, argumentsList).
22 [...]
23
24 9.2.1.3 OrdinaryCallEvaluateBody ( F, argumentsList )
25
26 1. Let status be FunctionDeclarationInstantiation(F, argumentsList).
27 [...]
28
29 9.2.12 FunctionDeclarationInstantiation(func, argumentsList)
30
31 [...]
32 23. Let iteratorRecord be Record {[[iterator]]:
33 CreateListIterator(argumentsList), [[done]]: false}.
34 24. If hasDuplicates is true, then
35 [...]
36 25. Else,
37 b. Let formalStatus be IteratorBindingInitialization for formals with
38 iteratorRecord and env as arguments.
39 [...]
40
41 13.3.3.6 Runtime Semantics: IteratorBindingInitialization
42
43 SingleNameBinding : BindingIdentifier Initializeropt
44
45 [...]
46 4. If iteratorRecord.[[done]] is false, then
47 a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
48 b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
49 c. ReturnIfAbrupt(next).
50 d. If next is false, set iteratorRecord.[[done]] to true.
51 e. Else,
52 [...]
53 i. Let v be IteratorValue(next).
54 ii. If v is an abrupt completion, set
55 iteratorRecord.[[done]] to true.
56 iii. ReturnIfAbrupt(v).
57 5. If iteratorRecord.[[done]] is true, let v be undefined.
58 [...]
59 8. Return InitializeReferencedBinding(lhs, v).
60---*/
61
62var callCount = 0;
63var f;
64f = function([x, y, z]) {
65 assert.sameValue(x, 1);
66 assert.sameValue(y, 2);
67 assert.sameValue(z, 3);
68 callCount = callCount + 1;
69};
70
71f([1, 2, 3]);
72assert.sameValue(callCount, 1, 'function invoked exactly once');