| description('Tests for ES6 class syntax default constructor'); |
| function shouldThrow(s, message) { |
| if (!message || e.toString() === eval(message)) |
| testPassed(s + ":::" + e.toString()); |
| function shouldBe(a, b) { |
| testPassed(a + ":::" + b); |
| testFailed(r1 + ":::" + r2); |
| function shouldBeTrue(s) { |
| testFailed("Failed assert"); |
| testPassed("Passed assert"); |
| shouldBeTrue('new A instanceof A'); |
| shouldThrow('A()', '"TypeError: Cannot call a class constructor"'); |
| shouldBeTrue('A.prototype.constructor instanceof Function'); |
| shouldBe('A.prototype.constructor.name', '"A"'); |
| shouldBeTrue('new B instanceof A; new B instanceof A'); |
| shouldThrow('B()', '"TypeError: Cannot call a class constructor"'); |
| shouldBe('B.prototype.constructor.name', '"B"'); |
| shouldBeTrue('A.prototype.constructor !== B.prototype.constructor'); |
| var result = new (class extends (class { constructor(a, b) { return [a, b]; } }) {})(1, 2); |
| var successfullyParsed = true; |