Object-defineProperties-02.js (915B)
1 // Exceptions thrown by obj.defineProperties are copied into the debugger compartment. 2 3 var g = newGlobal({newCompartment: true}); 4 var dbg = new Debugger; 5 var gw = dbg.addDebuggee(g); 6 7 function test(objexpr, descs) { 8 var exca, excb; 9 10 g.eval("obj = (" + objexpr + ");"); 11 var gobjw = gw.getOwnPropertyDescriptor("obj").value; 12 try { 13 gobjw.defineProperties(descs); 14 } catch (exc) { 15 exca = exc; 16 } 17 18 var indirectEval = eval; 19 var obj = indirectEval("(" + objexpr + ");"); 20 try { 21 Object.defineProperties(obj, descs); 22 } catch (exc) { 23 excb = exc; 24 } 25 26 assertEq(Object.getPrototypeOf(exca), Object.getPrototypeOf(excb)); 27 assertEq(exca.message, excb.message); 28 assertEq(typeof exca.fileName, "string"); 29 assertEq(typeof exca.stack, "string"); 30 } 31 32 test("Object.create(null, {p: {value: 1}})", {p: {value: 2}}); 33 test("({})", {x: {get: 'bad'}});