// Breakpoints are dropped from eval scripts when they finish executing.
// (The eval cache doesn't cache breakpoints.)

var g = newGlobal();

g.line0 = undefined;
g.eval("function f() {\n" +
       "    return eval(s);\n" +
       "}\n");
g.s = ("line0 = Error().lineNumber;\n" +
       "debugger;\n" +          // line0 + 1
       "result = 'ok';\n");     // line0 + 2

var dbg = Debugger(g);
var hits = 0, bphits = 0;
dbg.onDebuggerStatement = function (frame) {
    assertEq(frame.type, 'eval');
    assertEq(frame.script.getBreakpoints().length, 0);
    var h = {hit: function (frame) { bphits++; }};
    var offs = frame.script.getLineOffsets(g.line0 + 2);
    for (var i = 0; i < offs.length; i++)
        frame.script.setBreakpoint(offs[i], h);
    hits++;
};

for (var i = 0; i < 3; i++) {
    assertEq(g.f(), 'ok');
    assertEq(g.result, 'ok');
}
assertEq(hits, 3);
assertEq(bphits, 3);
