| // yield without an operand is fine and dandy. |
| |
| load(libdir + "asserts.js"); |
| |
| assertNoWarning(() => Function("yield"), SyntaxError, |
| "yield followed by EOF is fine"); |
| assertNoWarning(() => Function("yield;"), SyntaxError, |
| "yield followed by semicolon is fine"); |
| assertNoWarning(() => Function("yield\n"), SyntaxError, |
| "yield followed by newline is fine"); |
| assertNoWarning(() => Function("yield\n print('ok');"), SyntaxError, |
| "yield followed by newline and statement is fine"); |
| assertNoWarning(() => Function("yield\n /x/;"), SyntaxError, |
| "yield followed by newline and regexp is fine"); |
| assertThrowsInstanceOf(() => Function("yield\n /"), SyntaxError, |
| "yield followed by newline and slash is fine"); |
| |
| assertNoWarning(() => eval("(function () { yield; })"), SyntaxError, |
| "yield followed by semicolon in eval code is fine"); |
| assertNoWarning(() => eval("(function () { yield })"), SyntaxError, |
| "yield followed by } in eval code is fine"); |
| |
| assertNoWarning(() => Function("yield 0;"), |
| "yield with an operand should be fine"); |
| assertNoWarning(() => Function("yield 0"), |
| "yield with an operand should be fine, even without a semicolon"); |