// Debugger.Object.prototype.global accessor surfaces.

load(libdir + 'asserts.js');

var dbg = new Debugger;
var g = newGlobal();
var gw = dbg.addDebuggee(g);

assertEq(Object.getOwnPropertyDescriptor(gw, 'global'), undefined);
var d = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(gw), 'global');
assertEq(d.enumerable, false);
assertEq(d.configurable, true);
assertEq(typeof d.get, "function");
assertEq(d.get.length, 0);
assertEq(d.set, undefined);

// This should not throw.
gw.global = '';

// This should throw.
assertThrowsInstanceOf(function () { "use strict"; gw.global = {}; }, TypeError);
assertEq(gw.global, gw);

// You shouldn't be able to apply the accessor to the prototype.
assertThrowsInstanceOf(function () { return Debugger.Object.prototype.global; },
                       TypeError);