summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/class/newTargetArrow.js
blob: 548f750475bcb0cd4a54548af931072892631314 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 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");