summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma_6/LexicalEnvironment/unscopables-closures.js
blob: bdade1f113a4779c57ea232ec7cb3ef9583d90e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// @@unscopables continues to work after exiting the relevant `with` block,
// if the environment is captured by a closure.

let env = {
    x: 9000,
    [Symbol.unscopables]: {x: true}
};

function make_adder(x) {
    with (env)
        return function (y) { return x + y; };
}
assertEq(make_adder(3)(10), 13);

// Same test, but with a bunch of different parts for bad luck
let x = 500;
function make_adder_with_eval() {
    with (env)
        return eval('y => eval("x + y")');
}
assertEq(make_adder_with_eval()(10), 510);

reportCompare(0, 0);