| function assert(b) { |
| if (!b) |
| throw new Error("Bad"); |
| } |
| |
| function foo() { |
| class C { |
| constructor() |
| { |
| this.y = 22; |
| } |
| get baz() { return this.x; } |
| } |
| C.prototype.field = 42; |
| new C; |
| return C; |
| } |
| |
| for (let i = 0; i < 5; ++i) |
| foo(); |
| |
| function bar(p) { |
| class C extends p { |
| constructor() { |
| super(); |
| this.x = 22; |
| } |
| }; |
| let result = new C; |
| return result; |
| } |
| |
| for (let i = 0; i < 5; ++i) |
| bar(foo()); |
| |
| let instances = []; |
| for (let i = 0; i < 40; ++i) |
| instances.push(bar(foo())); |
| |
| function validate(item) { |
| assert(item.x === 22); |
| assert(item.baz === 22); |
| assert(item.field === 42); |
| } |
| |
| let start = Date.now(); |
| for (let i = 0; i < 100000; ++i) { |
| instances.forEach((x) => validate(x)); |
| } |
| if (false) |
| print(Date.now() - start); |