summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Environment-names-02.js
blob: 9dd87f49a3bc9c969db876f9550bd67ad441f3bd (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
// env.names() on object environments ignores property names that are not identifiers.

var g = newGlobal({newCompartment: true});
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);
}