Source code

Revision control

Copy as Markdown

Other Tools

function foo(o) {
// Ensure a NativeIterator exists for o.
for (var s in o) {}
// Loop over the keys, deleting y.
// If y is correctly suppressed, then result should
// be the name of the first property.
var result = "";
for (var s in o) {
delete o.y;
result += s;
}
assertEq(o[result], 42);
}
with ({}) {}
for (var i = 0; i < 100; i++) {
var o = {};
o["x" + i] = 42;
o.y = 1;
foo(o);
}
// Cross-realm, same-compartment
var g = newGlobal({newCompartment: false});
g.eval("var o = {x: 42, y: 1}");
foo(g.o);
// Cross-realm, cross-compartment
var g2 = newGlobal({newCompartment: true});
g2.eval("var o = {x: 42, y: 1}");
foo(g2.o);