Source code

Revision control

Copy as Markdown

Other Tools

// evalWithBindings to call a method of a debuggee value
var g = newGlobal({newCompartment: true});
var dbg = new Debugger;
var global = dbg.addDebuggee(g);
var hits = 0;
dbg.onDebuggerStatement = function (frame) {
var obj = frame.arguments[0];
var expected = frame.arguments[1];
assertEq(frame.evalWithBindings("obj.toString()", {obj: obj}).return, expected);
hits++;
};
g.eval("function f(obj, expected) { debugger; }");
g.eval("f(new Number(-0), '0');");
g.eval("f(new String('ok'), 'ok');");
g.eval("f(Symbol('still ok'), 'Symbol(still ok)');");
g.eval("f(Object(Symbol('still ok')), 'Symbol(still ok)');");
g.eval("f({toString: function () { return f; }}, f);");
assertEq(hits, 5);