/* * Any copyright is dedicated to the Public Domain. * http://creativecommons.org/licenses/publicdomain/ */ //----------------------------------------------------------------------------- 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");