Source code

Revision control

Copy as Markdown

Other Tools

// |reftest|
//
// Ensure PrivateNames aren't iterable.
class O {
#x = 123;
gx() {
return this.#x;
}
}
var o = new O;
assertEq(o.gx(), 123);
assertEq(Object.keys(o).length, 0);
assertEq(Object.getOwnPropertyNames(o).length, 0);
assertEq(Object.getOwnPropertySymbols(o).length, 0);
assertEq(Reflect.ownKeys(o).length, 0);
var forIn = [];
for (var pk in o) {
forIn.push(pk);
}
assertEq(forIn.length, 0);
// Proxy case
var proxy = new Proxy(o, {});
assertEq(Object.keys(proxy).length, 0);
assertEq(Object.getOwnPropertyNames(proxy).length, 0);
assertEq(Object.getOwnPropertySymbols(proxy).length, 0);
assertEq(Reflect.ownKeys(proxy).length, 0);
for (var pk in proxy) {
forIn.push(pk);
}
assertEq(forIn.length, 0);
if (typeof reportCompare === 'function')
reportCompare(0, 0);