summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Object-defineProperties-02.js
blob: 13837810042523a9e77c81f454446ab80590dd63 (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
// Exceptions thrown by obj.defineProperties are copied into the debugger compartment.

var g = newGlobal({newCompartment: true});
var dbg = new Debugger;
var gw = dbg.addDebuggee(g);

function test(objexpr, descs) {
    var exca, excb;

    g.eval("obj = (" + objexpr + ");");
    var gobjw = gw.getOwnPropertyDescriptor("obj").value;
    try {
        gobjw.defineProperties(descs);
    } catch (exc) {
        exca = exc;
    }

    var indirectEval = eval;
    var obj = indirectEval("(" + objexpr + ");");
    try {
        Object.defineProperties(obj, descs);
    } catch (exc) {
        excb = exc;
    }

    assertEq(Object.getPrototypeOf(exca), Object.getPrototypeOf(excb));
    assertEq(exca.message, excb.message);
    assertEq(typeof exca.fileName, "string");
    assertEq(typeof exca.stack, "string");
}

test("Object.create(null, {p: {value: 1}})", {p: {value: 2}});
test("({})", {x: {get: 'bad'}});