function *f() {
    var o = new Proxy({}, {
        get: function() { assertEq(0, 1); },
        has: function() { assertEq(0, 2); }
    });

    with (o) {
        yield 1;
        with ({}) {
            yield 2;
        }
    }
    with ({".generator": 100}) {
        yield eval("3");
    }
}
var s = "";
for (var i of f())
    s += i;
assertEq(s, "123");