blob: f5db9bc2e397f5b368164de00feb7c6e7b23fbdd [file] [log] [blame]
// <https://webkit.org/b/158460> Clarify SyntaxErrors around yield and unskip tests
//@ skip
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));
}
testSyntaxError(`
class Hello {
get *gen() {
}
}
`, `SyntaxError: Unexpected token '*'. Expected an opening '(' before a method's parameter list.`);
testSyntaxError(`
class Hello {
set *gen(value) {
}
}
`, `SyntaxError: Unexpected token '*'. Expected an opening '(' before a method's parameter list.`);
testSyntaxError(`
function ** gen() { }
`, `SyntaxError: Unexpected token '*'`);
// http://ecma-international.org/ecma-262/6.0/#sec-arrow-function-definitions-static-semantics-early-errors
testSyntaxError(`
var value = () => {
yield
}
`, `SyntaxError: Unexpected keyword 'yield'. Cannot use yield expression out of generator.`);
testSyntaxError(`
var value = (val = yield) => {
}
`, `SyntaxError: Unexpected keyword 'yield'. Cannot use yield expression out of generator.`);
testSyntaxError(`
function *gen() {
function ng(val = yield) {
}
}
`, `SyntaxError: Unexpected keyword 'yield'. Cannot use yield expression out of generator.`);
testSyntaxError(`
function *gen() {
var ng = (val = yield) => {
}
}
`, `SyntaxError: Unexpected token '=>'. Expected ';' after variable declaration.`);
// http://ecma-international.org/ecma-262/6.0/#sec-generator-function-definitions-static-semantics-early-errors
testSyntaxError(`
function gen(val = yield) {
}
`, `SyntaxError: Unexpected keyword 'yield'. Cannot use yield expression out of generator.`);
testSyntaxError(`
function *gen(val = yield) {
}
`, `SyntaxError: Unexpected keyword 'yield'. Cannot use yield expression within parameters.`);
testSyntaxError(`
function *gen(val = yield 20) {
}
`, `SyntaxError: Unexpected keyword 'yield'. Cannot use yield expression within parameters.`);
testSyntaxError(`
function *gen(val = yield * g) {
}
`, `SyntaxError: Unexpected keyword 'yield'. Cannot use yield expression within parameters.`);
testSyntax(`
function *gen(g = function *() { yield }) {
}
`);