load(libdir + "asserts.js");

var cases = [
    "{",
    "{ ;",
    "var",
    "var x,",
    "var x =",
    "let x,",
    "let x =",
    "const",
    "const x =",
    "const x = 1,",
    "if",
    "if (",
    "if (0) ; else",
    "do",
    "do ;",
    "do ; while",
    "do ; while (",
    "do ; while (1",
    "while",
    "while (",
    "while (1",
    "while (1)",
    "for",
    "for (",
    "for (;",
    "for (;;",
    "for (;;)",
    "for (var",
    "for (x",
    "for (x in",
    "for (x in y",
    "for (x in y)",
    "for (x of",
    "for (x of y",
    "for (x of y)",
    "switch",
    "switch (",
    "switch (x",
    "switch (x)",
    "with",
    "with (",
    "with (x",
    "with (x)",
    "a:",
    "throw",
    "try",
    "try {",
    "try {} catch",
    "try {} catch (",
    "try {} catch (exc",
    "try {} catch (exc if",
    "try {} catch (exc if 1",
    "try {} finally",
    "try {} finally {",

    "function",
    "function f",
    "function f(",
    "function f()",
    "function f() {",
    "(function",
    "(function f",
    "(function f(",
    "(function f()",

];

for (var s of cases)
    assertThrowsInstanceOf(() => Function(s), SyntaxError);

