Index: test/mjsunit/debug-evaluate-closure.js |
diff --git a/test/mjsunit/regress/regress-frame-details-null-receiver.js b/test/mjsunit/debug-evaluate-closure.js |
similarity index 57% |
copy from test/mjsunit/regress/regress-frame-details-null-receiver.js |
copy to test/mjsunit/debug-evaluate-closure.js |
index d15ed4d00ae774ad01406855fc42cb8c1dfbcc07..e7427eccbe13df64659c85464847f267375e115f 100644 |
--- a/test/mjsunit/regress/regress-frame-details-null-receiver.js |
+++ b/test/mjsunit/debug-evaluate-closure.js |
@@ -31,22 +31,57 @@ Debug = debug.Debug; |
var listened = false; |
function listener(event, exec_state, event_data, data) { |
- if (event == Debug.DebugEvent.Exception) { |
- for (var i = 0; i < exec_state.frameCount(); i++) { |
- print(exec_state.frame(i).receiver()); |
- print(exec_state.frame(i).func().name()); |
- } |
+ if (event != Debug.DebugEvent.Break) return; |
+ try { |
+ assertEquals("bar return", exec_state.frame(0).evaluate("bar()").value()); |
+ assertEquals("inner bar", exec_state.frame(0).evaluate("inner").value()); |
+ assertEquals("outer bar", exec_state.frame(0).evaluate("outer").value()); |
+ assertEquals("baz inner", exec_state.frame(0).evaluate("baz").value()); |
+ assertEquals("baz outer", exec_state.frame(1).evaluate("baz").value()); |
+ exec_state.frame(0).evaluate("w = 'w foo'").value(); |
+ exec_state.frame(0).evaluate("inner = 'inner foo'").value(); |
+ exec_state.frame(0).evaluate("outer = 'outer foo'").value(); |
+ exec_state.frame(0).evaluate("baz = 'baz inner foo'").value(); |
+ exec_state.frame(1).evaluate("baz = 'baz outer foo'").value(); |
+ } catch (e) { |
+ print(e); |
+ print(e.stack); |
} |
listened = true; |
} |
Debug.setListener(listener); |
-Debug.setBreakOnException(); |
-assertThrows(function() { delete null['foo']; }); |
+var outer = "outer"; |
+var baz = "baz outer" |
-Debug.clearBreakOnException(); |
-Debug.setListener(null); |
+function foo() { |
+ var inner = "inner"; |
+ var baz = "baz inner"; |
+ var withw = { w: "w" }; |
+ var withv = { v: "v" }; |
-assertTrue(listened); |
+ with (withv) { |
+ var bar = function bar() { |
+ inner = "inner bar"; |
+ outer = "outer bar"; |
+ v = "v bar"; |
+ return "bar return"; |
+ }; |
+ } |
+ |
+ with (withw) { |
+ debugger; |
+ } |
+ assertEquals("inner foo", inner); |
+ assertEquals("baz inner foo", baz); |
+ assertEquals("w foo", withw.w); |
+ assertEquals("v bar", withv.v); |
+} |
+ |
+foo(); |
+assertEquals("outer foo", outer); |
+assertEquals("baz outer foo", baz); |
+assertTrue(listened); |
+Debug.setListener(null); |