Index: test/mjsunit/debug-evaluate-closure.js |
diff --git a/test/mjsunit/debug-evaluate-closure.js b/test/mjsunit/debug-evaluate-closure.js |
index 541dec9d6dab28fdc8ec7bade515a21cb230dd7c..7e8fb91da7e4f23ac2c155432fb26db2dd9a64d4 100644 |
--- a/test/mjsunit/debug-evaluate-closure.js |
+++ b/test/mjsunit/debug-evaluate-closure.js |
@@ -26,7 +26,6 @@ |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
// Flags: --expose-debug-as debug --allow-natives-syntax |
-// Flags: --debug-eval-readonly-locals |
Debug = debug.Debug; |
var listened = false; |
@@ -35,18 +34,20 @@ |
if (event != Debug.DebugEvent.Break) return; |
try { |
assertEquals("goo", exec_state.frame(0).evaluate("goo").value()); |
- exec_state.frame(0).evaluate("goo = 'goo foo'"); // no effect |
+ exec_state.frame(0).evaluate("goo = 'goo foo'"); |
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()); |
+ // Check that calling bar() has no effect to context-allocated variables. |
+ // TODO(yangguo): reevaluate this if we no longer update context from copy. |
+ assertEquals("inner", exec_state.frame(0).evaluate("inner").value()); |
+ assertEquals("outer", 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'"); |
- exec_state.frame(0).evaluate("inner = 'inner foo'"); // no effect |
- exec_state.frame(0).evaluate("outer = 'outer foo'"); // has effect |
- exec_state.frame(0).evaluate("baz = 'baz inner foo'"); // no effect |
- exec_state.frame(1).evaluate("baz = 'baz outer foo'"); // has effect |
+ exec_state.frame(0).evaluate("inner = 'inner foo'"); |
+ exec_state.frame(0).evaluate("outer = 'outer foo'"); |
+ exec_state.frame(0).evaluate("baz = 'baz inner foo'"); |
+ exec_state.frame(1).evaluate("baz = 'baz outer foo'"); |
listened = true; |
} catch (e) { |
print(e); |
@@ -68,9 +69,9 @@ |
with (withv) { |
var bar = function bar() { |
- assertEquals("goo", goo); |
- inner = "inner bar"; |
- outer = "outer bar"; |
+ assertEquals("goo foo", goo); |
+ inner = "inner bar"; // this has no effect, when called from debug-eval |
+ outer = "outer bar"; // this has no effect, when called from debug-eval |
v = "v bar"; |
return "bar return"; |
}; |
@@ -80,8 +81,8 @@ |
debugger; |
} |
- assertEquals("inner bar", inner); |
- assertEquals("baz inner", baz); |
+ assertEquals("inner foo", inner); |
+ assertEquals("baz inner foo", baz); |
assertEquals("w foo", withw.w); |
assertEquals("v bar", withv.v); |
} |