// new.target is valid in any arrow function not in a global context. new Function('(() => new.target)()'); // It's also good inside eval, but not global eval assertThrowsInstanceOf(() => eval('() => new.target'), SyntaxError); function assertNewTarget(expected) { assertEq((()=>new.target)(), expected); assertEq(eval('()=>new.target')(), expected); // Make sure that arrow functions can escape their original context and // still get the right answer. return (() => new.target); } const ITERATIONS = 550; for (let i = 0; i < ITERATIONS; i++) assertEq(assertNewTarget(undefined)(), undefined); for (let i = 0; i < ITERATIONS; i++) assertEq(new assertNewTarget(assertNewTarget)(), assertNewTarget); if (typeof reportCompare === 'function') reportCompare(0,0,"OK");