Source code

Revision control

Copy as Markdown

Other Tools

/*
* Any copyright is dedicated to the Public Domain.
*/
//-----------------------------------------------------------------------------
var BUGNUMBER = 1288460;
var summary =
"|let| and |static| are forbidden as Identifier only in strict mode code, " +
"and it's permissible to use them as Identifier (with or without " +
"containing escapes) in non-strict code";
print(BUGNUMBER + ": " + summary);
/**************
* BEGIN TEST *
**************/
function t(code)
{
var strictSemi = " 'use strict'; " + code;
var strictASI = " 'use strict' \n " + code;
var creationFunctions = [Function];
if (typeof evaluate === "function")
creationFunctions.push(evaluate);
if (typeof parseModule === "function")
creationFunctions.push(parseModule);
for (var func of creationFunctions)
{
if (typeof parseModule === "function" && func === parseModule)
assertThrowsInstanceOf(() => func(code), SyntaxError);
else
func(code);
assertThrowsInstanceOf(() => func(strictSemi), SyntaxError);
assertThrowsInstanceOf(() => func(strictASI), SyntaxError);
}
}
t("l\\u0065t: 42;");
t("if (1) l\\u0065t: 42;");
t("l\\u0065t = 42;");
t("if (1) l\\u0065t = 42;");
t("st\\u0061tic: 42;");
t("if (1) st\\u0061tic: 42;");
t("st\\u0061tic = 42;");
t("if (1) st\\u0061tic = 42;");
/******************************************************************************/
if (typeof reportCompare === "function")
reportCompare(true, true);
print("Tests complete");