// Just like newTargetDirectInvoke, except to prove it works in functions // defined with method syntax as well. Note that methods, getters, and setters // are not constructible. let ol = { olTest(arg) { assertEq(arg, 4); assertEq(new.target, undefined); }, get ol() { assertEq(new.target, undefined); }, set ol(arg) { assertEq(arg, 4); assertEq(new.target, undefined); } } class cl { constructor() { assertEq(new.target, cl); } clTest(arg) { assertEq(arg, 4); assertEq(new.target, undefined); } get cl() { assertEq(new.target, undefined); } set cl(arg) { assertEq(arg, 4); assertEq(new.target, undefined); } static staticclTest(arg) { assertEq(arg, 4); assertEq(new.target, undefined); } static get staticcl() { assertEq(new.target, undefined); } static set staticcl(arg) { assertEq(arg, 4); assertEq(new.target, undefined); } } const TEST_ITERATIONS = 150; for (let i = 0; i < TEST_ITERATIONS; i++) ol.olTest(4); for (let i = 0; i < TEST_ITERATIONS; i++) ol.ol; for (let i = 0; i < TEST_ITERATIONS; i++) ol.ol = 4; for (let i = 0; i < TEST_ITERATIONS; i++) cl.staticclTest(4); for (let i = 0; i < TEST_ITERATIONS; i++) cl.staticcl; for (let i = 0; i < TEST_ITERATIONS; i++) cl.staticcl = 4; for (let i = 0; i < TEST_ITERATIONS; i++) new cl(); let clInst = new cl(); for (let i = 0; i < TEST_ITERATIONS; i++) clInst.clTest(4); for (let i = 0; i < TEST_ITERATIONS; i++) clInst.cl; for (let i = 0; i < TEST_ITERATIONS; i++) clInst.cl = 4; if (typeof reportCompare === "function") reportCompare(0,0,"OK");