setter-argc.js (1139B)
1 // Check that setters throw TypeError when passed no arguments, instead of crashing. 2 3 function check(obj) { 4 let proto = Object.getPrototypeOf(obj); 5 let props = Object.getOwnPropertyNames(proto); 6 for (let prop of props) { 7 let desc = Object.getOwnPropertyDescriptor(proto, prop); 8 if (desc.set) { 9 print("bleah: " + JSON.stringify(prop)); 10 assertEq(typeof desc.set, 'function'); 11 try { 12 desc.set.call(obj); 13 assertEq("should have thrown TypeError", false); 14 } catch (e) { 15 assertEq(e instanceof TypeError, true); 16 } 17 } 18 } 19 } 20 21 var dbg = new Debugger; 22 var g = newGlobal({newCompartment: true}); 23 var gw = dbg.addDebuggee(g); 24 25 // Debugger 26 check(dbg); 27 28 // Debugger.Memory 29 check(dbg.memory); 30 31 // Debugger.Object 32 g.eval('function f() { debugger; }'); 33 var fw = gw.getOwnPropertyDescriptor('f').value; 34 check(fw); 35 36 // Debugger.Script 37 check(fw.script); 38 39 // Debugger.Source 40 check(fw.script.source); 41 42 // Debugger.Environment 43 check(fw.environment); 44 45 // Debugger.Frame 46 var log = ''; 47 dbg.onDebuggerStatement = function(frame) { 48 log += 'd'; 49 check(frame); 50 } 51 g.eval('f()'); 52 assertEq(log, 'd');