Class body ending with a semicolon throws a SyntaxError
[WebKit-https.git] / LayoutTests / js / script-tests / class-syntax-semicolon.js
1
2 description('Tests for ES6 class syntax containing semicolon in the class body');
3
4 shouldThrow("class A { foo;() { } }", "'SyntaxError: Unexpected token \\';\\'. Expected an opening \\'(\\' before a method\\'s parameter list.'");
5 shouldThrow("class A { foo() ; { } }", "'SyntaxError: Unexpected token \\\';\\'. Expected an opening \\'{\\' at the start of a method body.'");
6 shouldThrow("class A { get ; foo() { } }", "'SyntaxError: Unexpected token \\';\\''");
7 shouldThrow("class A { get foo;() { } }", "'SyntaxError: Unexpected token \\\';\\'. Expected a parameter list for getter definition.'");
8 shouldThrow("class A { get foo() ; { } }", "'SyntaxError: Unexpected token \\\';\\'. Expected an opening \\'{\\' at the start of a getter body.'");
9 shouldThrow("class A { set ; foo(x) { } }", "'SyntaxError: Unexpected token \\';\\''");
10 shouldThrow("class A { set foo;(x) { } }", "'SyntaxError: Unexpected token \\\';\\'. Expected a parameter list for setter definition.'");
11 shouldThrow("class A { set foo(x) ; { } }", "'SyntaxError: Unexpected token \\\';\\'. Expected an opening \\'{\\' at the start of a setter body.'");
12
13 shouldNotThrow("class A { ; }");
14 shouldNotThrow("class A { foo() { } ; }");
15 shouldNotThrow("class A { get foo() { } ; }");
16 shouldNotThrow("class A { set foo(x) { } ; }");
17 shouldNotThrow("class A { static foo() { } ; }");
18 shouldNotThrow("class A { static get foo() { } ; }");
19 shouldNotThrow("class A { static set foo(x) { } ; }");
20
21 shouldNotThrow("class A { ; foo() { } }");
22 shouldNotThrow("class A { ; get foo() { } }");
23 shouldNotThrow("class A { ; set foo(x) { } }");
24 shouldNotThrow("class A { ; static foo() { } }");
25 shouldNotThrow("class A { ; static get foo() { } }");
26 shouldNotThrow("class A { ; static set foo(x) { } }");
27
28 shouldNotThrow("class A { foo() { } ; foo() {} }");
29 shouldNotThrow("class A { foo() { } ; get foo() {} }");
30 shouldNotThrow("class A { foo() { } ; set foo(x) {} }");
31 shouldNotThrow("class A { foo() { } ; static foo() {} }");
32 shouldNotThrow("class A { foo() { } ; static get foo() {} }");
33 shouldNotThrow("class A { foo() { } ; static set foo(x) {} }");
34
35 shouldNotThrow("class A { get foo() { } ; foo() {} }");
36 shouldNotThrow("class A { get foo() { } ; get foo() {} }");
37 shouldNotThrow("class A { get foo() { } ; set foo(x) {} }");
38 shouldNotThrow("class A { get foo() { } ; static foo() {} }");
39 shouldNotThrow("class A { get foo() { } ; static get foo() {} }");
40 shouldNotThrow("class A { get foo() { } ; static set foo(x) {} }");
41
42 shouldNotThrow("class A { set foo(x) { } ; foo() {} }");
43 shouldNotThrow("class A { set foo(x) { } ; get foo() {} }");
44 shouldNotThrow("class A { set foo(x) { } ; set foo(x) {} }");
45 shouldNotThrow("class A { set foo(x) { } ; static foo() {} }");
46 shouldNotThrow("class A { set foo(x) { } ; static get foo() {} }");
47 shouldNotThrow("class A { set foo(x) { } ; static set foo(x) {} }");
48
49 shouldNotThrow("class A { static foo() { } ; foo() {} }");
50 shouldNotThrow("class A { static foo() { } ; get foo() {} }");
51 shouldNotThrow("class A { static foo() { } ; set foo(x) {} }");
52 shouldNotThrow("class A { static foo() { } ; static foo() {} }");
53 shouldNotThrow("class A { static foo() { } ; static get foo() {} }");
54 shouldNotThrow("class A { static foo() { } ; static set foo(x) {} }");
55
56 shouldNotThrow("class A { static get foo() { } ; foo() {} }");
57 shouldNotThrow("class A { static get foo() { } ; get foo() {} }");
58 shouldNotThrow("class A { static get foo() { } ; set foo(x) {} }");
59 shouldNotThrow("class A { static get foo() { } ; static foo() {} }");
60 shouldNotThrow("class A { static get foo() { } ; static get foo() {} }");
61 shouldNotThrow("class A { static get foo() { } ; static set foo(x) {} }");
62
63 shouldNotThrow("class A { static set foo(x) { } ; foo() {} }");
64 shouldNotThrow("class A { static set foo(x) { } ; get foo() {} }");
65 shouldNotThrow("class A { static set foo(x) { } ; set foo(x) {} }");
66 shouldNotThrow("class A { static set foo(x) { } ; static foo() {} }");
67 shouldNotThrow("class A { static set foo(x) { } ; static get foo() {} }");
68 shouldNotThrow("class A { static set foo(x) { } ; static set foo(x) {} }");
69
70 var successfullyParsed = true;