44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
description('Tests for calling the constructors of ES6 classes');
|
|
|
|
class A { constructor() {} };
|
|
class B extends A { constructor() { super() } };
|
|
|
|
function shouldThrow(s, message) {
|
|
var threw = false;
|
|
try {
|
|
eval(s);
|
|
} catch(e) {
|
|
threw = true;
|
|
if (e.toString() === eval(message))
|
|
testPassed(s + ":::" + message);
|
|
else
|
|
testFailed(e.toString() + ":::" + message);
|
|
}
|
|
if (!threw)
|
|
testFailed(s);
|
|
}
|
|
|
|
function shouldNotThrow(s) {
|
|
var threw = false;
|
|
try {
|
|
eval(s);
|
|
} catch(e) {
|
|
threw = true;
|
|
}
|
|
if (threw)
|
|
testFailed(s);
|
|
else
|
|
testPassed(s);
|
|
}
|
|
|
|
shouldNotThrow('new A');
|
|
shouldThrow('A()', '"TypeError: Cannot call a class constructor without |new|"');
|
|
shouldNotThrow('new B');
|
|
shouldThrow('B()', '"TypeError: Cannot call a class constructor without |new|"');
|
|
shouldNotThrow('new (class { constructor() {} })()');
|
|
shouldThrow('(class { constructor() {} })()', '"TypeError: Cannot call a class constructor without |new|"');
|
|
shouldThrow('new (class extends null { constructor() { super() } })()', '"TypeError: function is not a constructor (evaluating \'super()\')"');
|
|
shouldThrow('(class extends null { constructor() { super() } })()', '"TypeError: Cannot call a class constructor without |new|"');
|
|
|
|
var successfullyParsed = true;
|