blob: f8671b81f7db78278f9d930807e466948462614e [file] [log] [blame]
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);
}
checkModuleSyntaxError(String.raw`
var await;
`, `SyntaxError: Cannot use 'await' as a variable name in a module.:2`);
checkModuleSyntaxError(`
export var await;
`, `SyntaxError: Cannot use 'await' as a variable name in a module.:2`);
checkModuleSyntaxError(String.raw`
let await;
`, `SyntaxError: Cannot use 'await' as a lexical variable name in a module.:2`);
checkModuleSyntaxError(String.raw`
export let await;
`, `SyntaxError: Cannot use 'await' as a lexical variable name in a module.:2`);
checkModuleSyntaxError(String.raw`
const await = 1
`, `SyntaxError: Cannot use 'await' as a lexical variable name in a module.:2`);
checkModuleSyntaxError(String.raw`
export const await = 1
`, `SyntaxError: Cannot use 'await' as a lexical variable name in a module.:2`);
checkModuleSyntaxError(String.raw`
function await() {}
`, `SyntaxError: Cannot declare function named 'await' in a module.:2`);
checkModuleSyntaxError(String.raw`
function* await() {}
`, `SyntaxError: Cannot declare function named 'await' in a module.:2`);
checkModuleSyntaxError(String.raw`
async function await() {}
`, `SyntaxError: Cannot declare function named 'await' in a module.:2`);
checkModuleSyntaxError(String.raw`
import {await} from 'foo';
`, `SyntaxError: Cannot use 'await' as an imported binding name.:2`);
checkModuleSyntaxError(String.raw`
import {foo as await} from 'foo';
`, `SyntaxError: Cannot use 'await' as an imported binding name.:2`);
checkModuleSyntaxError(String.raw`
import * as await from 'foo';
`, `SyntaxError: Cannot use 'await' as an imported binding name.:2`);
checkModuleSyntaxError(String.raw`
import await, {x, y, z} from 'foo';
`, `SyntaxError: Cannot use 'await' as an imported binding name.:2`);
checkModuleSyntaxError(String.raw`
import await, {x, y, z,} from 'foo';
`, `SyntaxError: Cannot use 'await' as an imported binding name.:2`);
checkModuleSyntaxError(String.raw`
import await from 'foo';
`, `SyntaxError: Cannot use 'await' as an imported binding name.:2`);
checkModuleSyntaxError(String.raw`
import await, * as foo from 'foo';
`, `SyntaxError: Cannot use 'await' as an imported binding name.:2`);