Skip these two tests in the stress testing since the feature isn't enabled.
[WebKit-https.git] / LayoutTests / js / script-tests / class-syntax-declaration.js
1 //@ skip
2
3 var constructorCallCount = 0;
4 const staticMethodValue = [1];
5 const instanceMethodValue = [2];
6 const getterValue = [3];
7 var setterValue = undefined;
8 class A {
9     constructor() { constructorCallCount++; }
10     static someStaticMethod() { return staticMethodValue; }
11     someInstanceMethod() { return instanceMethodValue; }
12     get someGetter() { return getterValue; }
13     set someSetter(value) { setterValue = value; }
14 }
15
16 shouldBe("constructorCallCount", "0");
17 shouldBe("A.someStaticMethod()", "staticMethodValue");
18 shouldBe("(new A).someInstanceMethod()", "instanceMethodValue");
19 shouldBe("constructorCallCount", "1");
20 shouldBe("(new A).someGetter", "getterValue");
21 shouldBe("constructorCallCount", "2");
22 shouldBe("(new A).someGetter", "getterValue");
23 shouldBe("setterValue", "undefined");
24 shouldNotThrow("(new A).someSetter = 789");
25 shouldBe("setterValue", "789");
26 shouldBe("(new A).__proto__", "A.prototype");
27 shouldBe("A.prototype.constructor", "A");
28
29 shouldThrow("class", "'SyntaxError: Unexpected end of script'");
30 shouldThrow("class X {", "'SyntaxError: Unexpected end of script'");
31 shouldThrow("class X { ( }", "'SyntaxError: Unexpected token \\'(\\'. Expected an indentifier.'");
32 shouldThrow("class X {}", "'SyntaxError: Class declaration without a constructor is not supported yet.'");
33 shouldThrow("class X { constructor() {} constructor() {} }", "'SyntaxError: Cannot declare multiple constructors in a single class.'");
34 shouldNotThrow("class X { constructor() {} static constructor() { return staticMethodValue; } }");
35 shouldBe("X.constructor()", "staticMethodValue");
36 shouldThrow("class X { constructor() {} static prototype() {} }", "'SyntaxError: Cannot declare a static method named \\'prototype\\'.'");
37 shouldNotThrow("class X { constructor() {} prototype() { return instanceMethodValue; } }");
38 shouldBe("(new X).prototype()", "instanceMethodValue");
39
40 var successfullyParsed = true;