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