// env.names() on object environments ignores property names that are not identifiers. var g = newGlobal(); var dbg = Debugger(g); var withNames, globalNames; g.h = function () { var env = dbg.getNewestFrame().environment; withNames = env.names(); while (env.parent !== null) env = env.parent; globalNames = env.names(); }; g.eval("" + function fill(obj) { obj.sanityCheck = 1; obj["0xcafe"] = 2; obj[" "] = 3; obj[""] = 4; obj[0] = 5; obj[Symbol.for("moon")] = 6; return obj; }) g.eval("fill(this);\n" + "with (fill({})) h();"); for (var names of [withNames, globalNames]) { assertEq(names.indexOf("sanityCheck") !== -1, true); assertEq(names.indexOf("0xcafe"), -1); assertEq(names.indexOf(" "), -1); assertEq(names.indexOf(""), -1); assertEq(names.indexOf("0"), -1); assertEq(names.indexOf(Symbol.for("moon")), -1); }