Commit 5d70a291 authored by yurys@chromium.org's avatar yurys@chromium.org

Fix debuger evaluation on a breakpoint inside eval

Corresponding Chromium issue: http://code.google.com/p/chromium/issues/detail?id=74412
Review URL: http://codereview.chromium.org/6875005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7633 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 46164ee2
......@@ -10485,7 +10485,7 @@ static Handle<Context> CopyWithContextChain(Handle<Context> context_chain,
// Recursively copy the with contexts.
Handle<Context> previous(context_chain->previous());
Handle<JSObject> extension(JSObject::cast(context_chain->extension()));
Handle<Context> context = CopyWithContextChain(function_context, previous);
Handle<Context> context = CopyWithContextChain(previous, function_context);
return context->GetIsolate()->factory()->NewWithContext(
context, extension, context_chain->IsCatchContext());
}
......
......@@ -42,13 +42,13 @@ function listener(event, exec_state, event_data, data) {
// Break point in first with block.
assertEquals(2, exec_state.frame(0).evaluate('a').value());
assertEquals(2, exec_state.frame(0).evaluate('b').value());
} else {
} else if (breakPointCount == 2) {
// Break point in second with block.
assertEquals(3, exec_state.frame(0).evaluate('a').value());
assertEquals(1, exec_state.frame(0).evaluate('b').value());
// Indicate that all was processed.
listenerComplete = true;
} else if (breakPointCount == 3) {
// Break point in eval with block.
assertEquals('local', exec_state.frame(0).evaluate('foo').value());
}
}
} catch (e) {
......@@ -72,6 +72,10 @@ function f() {
};
f();
var foo = "global";
eval("with({bar:'with'}) { (function g() { var foo = 'local'; debugger; })(); }");
// Make sure that the debug event listener vas invoked.
assertTrue(listenerComplete);
assertEquals(3, breakPointCount);
assertFalse(exception, "exception in listener")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment