Source code

Revision control

Copy as Markdown

Other Tools

// 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'}});