mirror of
https://github.com/tc39/test262.git
synced 2025-05-03 14:30:27 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
319 lines
10 KiB
JavaScript
319 lines
10 KiB
JavaScript
function shouldThrow(func, errorMessage) {
|
|
var errorThrown = false;
|
|
var error = null;
|
|
try {
|
|
func();
|
|
} catch (e) {
|
|
errorThrown = true;
|
|
error = e;
|
|
}
|
|
if (!errorThrown)
|
|
throw new Error('not thrown');
|
|
if (String(error) !== errorMessage)
|
|
throw new Error(`bad error: ${String(error)}`);
|
|
}
|
|
|
|
function checkModuleSyntaxError(source, errorMessage) {
|
|
shouldThrow(() => checkModuleSyntax(source), errorMessage);
|
|
}
|
|
|
|
// --------------- import -------------------
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import {,} from "Cocoa"
|
|
`, `SyntaxError: Unexpected token ','. Expected an imported name for the import declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * from "Cocoa"
|
|
`, `SyntaxError: Unexpected identifier 'from'. Expected 'as' before imported binding name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * from "Cocoa"
|
|
`, `SyntaxError: Unexpected identifier 'from'. Expected 'as' before imported binding name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * of name from "Cocoa"
|
|
`, `SyntaxError: Unexpected identifier 'of'. Expected 'as' before imported binding name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * as name fro "Cocoa"
|
|
`, `SyntaxError: Unexpected identifier 'fro'. Expected 'from' before imported module name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * as name fro "Cocoa"
|
|
`, `SyntaxError: Unexpected identifier 'fro'. Expected 'from' before imported module name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import d, { e, f, g as c }, c from "Cappuccino"
|
|
`, `SyntaxError: Unexpected token ','. Expected 'from' before imported module name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import d, c from "Cappuccino"
|
|
`, `SyntaxError: Unexpected identifier 'c'. Expected namespace import or import list.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import i, * as j, * as k from "Cappuccino"
|
|
`, `SyntaxError: Unexpected token ','. Expected 'from' before imported module name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * as a, b from "Cappuccino"
|
|
`, `SyntaxError: Unexpected token ','. Expected 'from' before imported module name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import { a, b, c as d }, e from "Cappuccino"
|
|
`, `SyntaxError: Unexpected token ','. Expected 'from' before imported module name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import a
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import a from
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import { a }
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import {} from
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import *
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * as
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * from
|
|
`, `SyntaxError: Unexpected identifier 'from'. Expected 'as' before imported binding name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * as from from
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * as from from d
|
|
`, `SyntaxError: Unexpected identifier 'd'. Imported modules names must be string literals.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * as from from 20
|
|
`, `SyntaxError: Unexpected number '20'. Imported modules names must be string literals.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
function noTopLevel() {
|
|
import * as from from "Cocoa"
|
|
}
|
|
`, `SyntaxError: Unexpected token '*'. import call expects exactly one argument.:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
if (noTopLevel) {
|
|
import * as from from "Cocoa"
|
|
}
|
|
`, `SyntaxError: Unexpected token '*'. import call expects exactly one argument.:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
{
|
|
import * as from from "Cocoa"
|
|
}
|
|
`, `SyntaxError: Unexpected token '*'. import call expects exactly one argument.:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
for (var i = 0; i < 1000; ++i) {
|
|
import * as from from "Cocoa"
|
|
}
|
|
`, `SyntaxError: Unexpected token '*'. import call expects exactly one argument.:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import for from "Cocoa";
|
|
`, `SyntaxError: Unexpected keyword 'for'. Expected namespace import or import list.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import enum from "Cocoa";
|
|
`, `SyntaxError: Unexpected use of reserved word 'enum'. Expected namespace import or import list.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * as for from "Cocoa";
|
|
`, `SyntaxError: Unexpected keyword 'for'. Expected a variable name for the import declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import * as enum from "Cocoa";
|
|
`, `SyntaxError: Unexpected use of reserved word 'enum'. Expected a variable name for the import declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import { module as default } from "Cocoa"
|
|
`, `SyntaxError: Unexpected keyword 'default'. Expected a variable name for the import declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import { module as enum } from "Cocoa"
|
|
`, `SyntaxError: Unexpected use of reserved word 'enum'. Expected a variable name for the import declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import { for } from "Cocoa"
|
|
`, `SyntaxError: Cannot use keyword as imported binding name.:2`);
|
|
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import a, { [assign] as c } from "Cocoa"
|
|
`, `SyntaxError: Unexpected token '['. Expected an imported name for the import declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import d, { g as {obj} } from "Cappuccino"
|
|
`, `SyntaxError: Unexpected token '{'. Expected a variable name for the import declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import d, { {obj} } from "Cappuccino"
|
|
`, `SyntaxError: Unexpected token '{'. Expected an imported name for the import declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import { binding
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import { hello, binding as
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
import { hello, binding as
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
// --------------- export -------------------
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export { , } from "Cocoa"
|
|
`, `SyntaxError: Unexpected token ','. Expected a variable name for the export declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export { a, , } from "Cocoa"
|
|
`, `SyntaxError: Unexpected token ','. Expected a variable name for the export declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export a from "Cocoa"
|
|
`, `SyntaxError: Unexpected identifier 'a'. Expected either a declaration or a variable statement.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export a
|
|
`, `SyntaxError: Unexpected identifier 'a'. Expected either a declaration or a variable statement.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export * as b from "Cocoa"
|
|
`, `SyntaxError: Unexpected identifier 'as'. Expected 'from' before exported module name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export * "Cocoa"
|
|
`, `SyntaxError: Unexpected string literal "Cocoa". Expected 'from' before exported module name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export const a;
|
|
`, `SyntaxError: Unexpected token ';'. const declared variable 'a' must have an initializer.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export const a = 20, b;
|
|
`, `SyntaxError: Unexpected token ';'. const declared variable 'b' must have an initializer.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export default 20, 30, 40;
|
|
`, `SyntaxError: Unexpected token ','. Expected a ';' following a targeted export declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export function () { }
|
|
`, `SyntaxError: Function statements must have a name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export class { }
|
|
`, `SyntaxError: Class statements must have a name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export class extends Drink {
|
|
}
|
|
`, `SyntaxError: Cannot use the keyword 'extends' as a class name.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export default 20 30
|
|
`, `SyntaxError: Unexpected number '30'. Expected a ';' following a targeted export declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export default 20 + 30, 40;
|
|
`, `SyntaxError: Unexpected token ','. Expected a ';' following a targeted export declaration.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export { default as default }
|
|
`, `SyntaxError: Cannot use keyword as exported variable name.:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export { default }
|
|
`, `SyntaxError: Cannot use keyword as exported variable name.:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export { default as binding }
|
|
`, `SyntaxError: Cannot use keyword as exported variable name.:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export { hello, default as binding }
|
|
`, `SyntaxError: Cannot use keyword as exported variable name.:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export { implements }
|
|
`, `SyntaxError: Cannot use keyword as exported variable name.:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export { static }
|
|
`, `SyntaxError: Cannot use keyword as exported variable name.:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export { binding
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export { hello, binding as
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
export { hello, binding as
|
|
`, `SyntaxError: Unexpected end of script:3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
function noTopLevel() {
|
|
export * from "Cocoa"
|
|
}
|
|
`, `SyntaxError: Unexpected keyword 'export':3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
if (noTopLevel) {
|
|
export * from "Cocoa"
|
|
}
|
|
`, `SyntaxError: Unexpected keyword 'export':3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
{
|
|
export * from "Cocoa"
|
|
}
|
|
`, `SyntaxError: Unexpected keyword 'export':3`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
for (var i = 0; i < 1000; ++i) {
|
|
export * from "Cocoa"
|
|
}
|
|
`, `SyntaxError: Unexpected keyword 'export':3`);
|
|
|
|
// --------------- other ---------------------
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
new.target;
|
|
`, `SyntaxError: new.target is only valid inside functions.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
super();
|
|
`, `SyntaxError: super is not valid in this context.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
super.test();
|
|
`, `SyntaxError: super is not valid in this context.:2`);
|
|
|
|
checkModuleSyntaxError(String.raw`
|
|
super.test = 20;
|
|
`, `SyntaxError: super is not valid in this context.:2`);
|