Bug 880447 - Permit 'yield yield expr;'. r=till.

This commit is contained in:
Jason Orendorff 2013-07-10 08:14:03 -05:00
Родитель 2618d89e0e
Коммит f15ea9fb51
2 изменённых файлов: 13 добавлений и 2 удалений

Просмотреть файл

@ -4416,8 +4416,7 @@ Parser<ParseHandler>::returnStatementOrYieldExpression()
if (next == TOK_ERROR)
return null();
if (next == TOK_EOF || next == TOK_EOL || next == TOK_SEMI || next == TOK_RC ||
(isYield && (next == TOK_YIELD || next == TOK_RB || next == TOK_RP ||
next == TOK_COLON || next == TOK_COMMA)))
(isYield && (next == TOK_RB || next == TOK_RP || next == TOK_COLON || next == TOK_COMMA)))
{
if (isYield) {
if (!reportWithOffset(ParseWarning, false, pos().begin, JSMSG_YIELD_WITHOUT_OPERAND))

Просмотреть файл

@ -0,0 +1,12 @@
// Bug 880447
load(libdir + "asserts.js");
function f() {
yield yield 1;
}
var g = f();
assertEq(g.next(), 1);
assertEq(g.send("hello"), "hello");
assertThrowsValue(() => g.next(), StopIteration);