summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/PrivateName/not-iterable.js
blob: 0e9a76f56965dd3fa21bdfa935d0b93b0761964d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// |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);