mirror of https://github.com/tc39/test262.git
97 lines
1.7 KiB
JavaScript
97 lines
1.7 KiB
JavaScript
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));
|
|
}
|
|
|
|
{
|
|
let tokens = [
|
|
'-',
|
|
'+',
|
|
'~',
|
|
'!',
|
|
'typeof',
|
|
'void',
|
|
'delete',
|
|
];
|
|
|
|
for (let token of tokens) {
|
|
testSyntaxError(`
|
|
function pow(a, b)
|
|
{
|
|
return ${token} a ** b;
|
|
}
|
|
`, `SyntaxError: Unexpected token '**'. Ambiguous unary expression in the left hand side of the exponentiation expression; parentheses must be used to disambiguate the expression.`);
|
|
}
|
|
}
|
|
|
|
{
|
|
let tokens = [
|
|
'-',
|
|
'+',
|
|
'~',
|
|
'!',
|
|
'typeof',
|
|
'void',
|
|
'delete',
|
|
];
|
|
|
|
for (let token of tokens) {
|
|
testSyntax(`
|
|
function pow(a, b)
|
|
{
|
|
return (${token} a) ** b;
|
|
}
|
|
`);
|
|
}
|
|
}
|
|
|
|
{
|
|
let tokens = [
|
|
'++',
|
|
'--',
|
|
];
|
|
|
|
for (let token of tokens) {
|
|
testSyntax(`
|
|
function pow(a, b)
|
|
{
|
|
return ${token} a ** b;
|
|
}
|
|
`);
|
|
}
|
|
}
|
|
|
|
{
|
|
let tokens = [
|
|
'++',
|
|
'--',
|
|
];
|
|
|
|
for (let token of tokens) {
|
|
testSyntax(`
|
|
function pow(a, b)
|
|
{
|
|
return a ${token} ** b;
|
|
}
|
|
`);
|
|
}
|
|
}
|