|
1 // Test interactions between ES6 generators and not-yet-standard |
|
2 // features. |
|
3 |
|
4 function assertSyntaxError(str) { |
|
5 var msg; |
|
6 var evil = eval; |
|
7 try { |
|
8 // Non-direct eval. |
|
9 evil(str); |
|
10 } catch (exc) { |
|
11 if (exc instanceof SyntaxError) |
|
12 return; |
|
13 msg = "Assertion failed: expected SyntaxError, got " + exc; |
|
14 } |
|
15 if (msg === undefined) |
|
16 msg = "Assertion failed: expected SyntaxError, but no exception thrown"; |
|
17 throw new Error(msg + " - " + str); |
|
18 } |
|
19 |
|
20 // Destructuring binding. |
|
21 assertSyntaxError("function* f(x = yield) {}"); |
|
22 assertSyntaxError("function* f(x = yield 17) {}"); |
|
23 assertSyntaxError("function* f([yield]) {}"); |
|
24 assertSyntaxError("function* f({ yield }) {}"); |
|
25 assertSyntaxError("function* f(...yield) {}"); |
|
26 |
|
27 // For each. |
|
28 assertSyntaxError("for yield"); |
|
29 assertSyntaxError("for yield (;;) {}"); |
|
30 assertSyntaxError("for yield (x of y) {}"); |
|
31 assertSyntaxError("for yield (var i in o) {}"); |
|
32 |
|
33 // Expression bodies. |
|
34 assertSyntaxError("function* f() yield 7"); |