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); |