Chromium Code Reviews| Index: test/mjsunit/harmony/generators-parsing.js |
| diff --git a/test/mjsunit/harmony/generators-parsing.js b/test/mjsunit/harmony/generators-parsing.js |
| index 2a4a68c37cd3f71089c280d8b52dbe507b0f6fda..21790b0e1383b0a67dac5774a605b4c8d9916fab 100644 |
| --- a/test/mjsunit/harmony/generators-parsing.js |
| +++ b/test/mjsunit/harmony/generators-parsing.js |
| @@ -35,6 +35,40 @@ function* g() { yield 3; yield 4; } |
| // Yield expressions. |
| function* g() { (yield 3) + (yield 4); } |
| +// Yield without a RHS. |
| +function* g() { yield; } |
|
marja
2014/06/26 10:41:52
Could you add a test that calls this kind of funct
wingo
2014/06/26 11:04:27
You can see an example of this on line 63. (The r
|
| +function* g() { yield } |
| +function* g() { |
| + yield |
| +} |
| +function* g() { (yield) } |
| +function* g() { [yield] } |
| +function* g() { {yield} } |
| +function* g() { yield, yield } |
| +function* g() { yield; yield } |
| +function* g() { (yield) ? yield : yield } |
| +function* g() { |
| + (yield) |
| + ? yield |
| + : yield |
| +} |
| + |
| +// If yield has a RHS, it needs to start on the same line. The * in a |
| +// yield* counts as starting the RHS. |
| +function* g() { |
| + yield * |
| + foo |
| +} |
| +assertThrows("function* g() { yield\n* foo }", SyntaxError); |
| +assertEquals(undefined, |
| + (function*(){ |
| + yield |
| + 3 |
| + })().next().value); |
| + |
| +// A YieldExpression is not a LogicalORExpression. |
| +assertThrows("function* g() { yield ? yield : yield }", SyntaxError); |
| + |
| // You can have a generator in strict mode. |
| function* g() { "use strict"; yield 3; yield 4; } |
| @@ -50,14 +84,10 @@ function* g() { yield 1; return 2; yield "dead"; } |
| // Named generator expression. |
| (function* g() { yield 3; }); |
| -// A generator without a yield is specified as causing an early error. This |
| -// behavior is currently unimplemented. See |
| -// https://bugs.ecmascript.org/show_bug.cgi?id=1283. |
| +// You can have a generator without a yield. |
| function* g() { } |
| -// A YieldExpression in the RHS of a YieldExpression is currently specified as |
| -// causing an early error. This behavior is currently unimplemented. See |
| -// https://bugs.ecmascript.org/show_bug.cgi?id=1283. |
| +// A YieldExpression is valid as the RHS of a YieldExpression. |
| function* g() { yield yield 1; } |
| function* g() { yield 3 + (yield 4); } |
| @@ -86,9 +116,6 @@ assertThrows("function* g() { yield: 1 }", SyntaxError) |
| // functions. |
| function* g() { function f() { yield (yield + yield (0)); } } |
| -// Yield needs a RHS. |
| -assertThrows("function* g() { yield; }", SyntaxError); |
| - |
| // Yield in a generator is not an identifier. |
| assertThrows("function* g() { yield = 10; }", SyntaxError); |