// Debugger.prototype.onDebuggerStatement load(libdir + 'asserts.js'); var g = newGlobal(); var dbg = new Debugger(g); gc(); // don't assert marking debug hooks assertEq(dbg.onDebuggerStatement, undefined); function f() {} assertThrowsInstanceOf(function () { dbg.onDebuggerStatement = null; }, TypeError); assertThrowsInstanceOf(function () { dbg.onDebuggerStatement = "bad"; }, TypeError); assertThrowsInstanceOf(function () { dbg.onDebuggerStatement = {}; }, TypeError); dbg.onDebuggerStatement = f; assertEq(dbg.onDebuggerStatement, f); assertEq(Object.getOwnPropertyNames(dbg).length, 0); var desc = Object.getOwnPropertyDescriptor(Debugger.prototype, "onDebuggerStatement"); assertEq(desc.configurable, true); assertEq(desc.enumerable, false); assertThrowsInstanceOf(function () { desc.get(); }, TypeError); assertThrowsInstanceOf(function () { desc.get.call(undefined); }, TypeError); assertThrowsInstanceOf(function () { desc.get.call(Debugger.prototype); }, TypeError); assertEq(desc.get.call(dbg), f); assertThrowsInstanceOf(function () { desc.set(); }, TypeError); assertThrowsInstanceOf(function () { desc.set.call(dbg); }, TypeError); assertThrowsInstanceOf(function () { desc.set.call({}, f); }, TypeError); assertThrowsInstanceOf(function () { desc.set.call(Debugger.prototype, f); }, TypeError);