summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/syntax/escaped-let-static-identifier.js
blob: a4353a516f65fa5c8c5b597d4edd147b12ce95e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
 * 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");