blob: c9713a1e3ebb2cae3c08e5a4a555c8f755645723 [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-elision-step-err.case
3// - src/dstr-binding/error/gen-func-decl-dflt.template
4/*---
5description: Elision advances iterator and forwards abrupt completions (generator function declaration (default parameter))
6esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionobject
7es6id: 14.4.12
8features: [generator, destructuring-binding, default-parameters]
9flags: [generated]
10info: |
11 GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
12
13 [...]
14 2. Let F be GeneratorFunctionCreate(Normal, FormalParameters,
15 GeneratorBody, 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 ArrayBindingPattern : [ Elision ]
44
45 1. Return the result of performing
46 IteratorDestructuringAssignmentEvaluation of Elision with iteratorRecord
47 as the argument.
48
49 12.14.5.3 Runtime Semantics: IteratorDestructuringAssignmentEvaluation
50
51 Elision : ,
52
53 1. If iteratorRecord.[[done]] is false, then
54 a. Let next be IteratorStep(iteratorRecord.[[iterator]]).
55 b. If next is an abrupt completion, set iteratorRecord.[[done]] to true.
56 c. ReturnIfAbrupt(next).
57
58---*/
59var following = 0;
60var iter =function* () {
61 throw new Test262Error();
62 following += 1;
63}();
64
65function* f([,] = iter) {}
66
67assert.throws(Test262Error, function() {
68 f();
69});
70
71iter.next();
72assert.sameValue(following, 0, 'Iterator was properly closed.');