| function testSyntax(script) { |
| try { |
| eval(script); |
| } catch (error) { |
| if (error instanceof SyntaxError) |
| throw new Error("Bad error: " + String(error)); |
| } |
| } |
| |
| function testSyntaxError(script, message) { |
| var error = null; |
| try { |
| eval(script); |
| } catch (e) { |
| error = e; |
| } |
| if (!error) |
| throw new Error("Expected syntax error not thrown"); |
| |
| if (String(error) !== message) |
| throw new Error("Bad error: " + String(error)); |
| } |
| |
| testSyntax(` |
| yield; |
| `); |
| |
| testSyntaxError(` |
| yield*; |
| `, "SyntaxError: Unexpected token ';'"); |
| |
| testSyntaxError(` |
| yield 0; |
| `, "SyntaxError: Unexpected number '0'"); |
| |
| testSyntax(` |
| yield* 0; |
| `); |
| |
| testSyntax(` |
| function hello() { |
| yield; |
| } |
| `); |
| |
| testSyntaxError(` |
| function hello() { |
| yield*; |
| } |
| `, "SyntaxError: Unexpected token ';'"); |
| |
| testSyntaxError(` |
| function hello() { |
| yield 0; |
| } |
| `, "SyntaxError: Unexpected number '0'"); |
| |
| testSyntax(` |
| function hello() { |
| yield* 0; |
| } |
| `); |
| |
| testSyntax(` |
| function *gen() { |
| function hello() { |
| yield; |
| } |
| } |
| `); |
| |
| testSyntaxError(` |
| function *gen() { |
| function hello() { |
| yield*; |
| } |
| } |
| `, "SyntaxError: Unexpected token ';'"); |
| |
| testSyntaxError(` |
| function *gen() { |
| function hello() { |
| yield 0; |
| } |
| } |
| `, "SyntaxError: Unexpected number '0'"); |
| |
| testSyntax(` |
| function *gen() { |
| function hello() { |
| yield* 0; |
| } |
| } |
| `); |
| |
| testSyntax(` |
| function *gen() { |
| yield; |
| } |
| `); |
| |
| testSyntaxError(` |
| function *gen() { |
| yield*; |
| } |
| `, "SyntaxError: Unexpected token '*'"); |
| |
| testSyntax(` |
| function *gen() { |
| yield 0; |
| } |
| `); |
| |
| testSyntax(` |
| function *gen() { |
| yield* 0; |
| } |
| `); |
| |
| testSyntax(` |
| function *gen() { |
| { |
| let i = 30; |
| function ok() { |
| return i; |
| } |
| yield; |
| } |
| } |
| `); |
| |
| testSyntaxError(` |
| function *gen() { |
| { |
| let i = 30; |
| function ok() { |
| return i; |
| } |
| yield*; |
| } |
| } |
| `, "SyntaxError: Unexpected token '*'"); |
| |
| testSyntax(` |
| function *gen() { |
| { |
| let i = 30; |
| function ok() { |
| return i; |
| } |
| yield 0; |
| } |
| } |
| `); |
| |
| testSyntax(` |
| function *gen() { |
| { |
| let i = 30; |
| function ok() { |
| return i; |
| } |
| yield* 0; |
| } |
| } |
| `); |