From 4e32419be4c68e8e35e7ebf477c9cc1d840279cd Mon Sep 17 00:00:00 2001 From: neis Date: Mon, 14 Nov 2016 06:05:23 -0800 Subject: [PATCH] [debug] Extend a test and fix some typos. R=jgruber@chromium.org BUG= Review-Url: https://codereview.chromium.org/2493533003 Cr-Commit-Position: refs/heads/master@{#40966} --- src/debug/debug.cc | 2 +- test/mjsunit/debug-set-variable-value.js | 33 ++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/debug/debug.cc b/src/debug/debug.cc index 3b8243d433..9a3b6879f8 100644 --- a/src/debug/debug.cc +++ b/src/debug/debug.cc @@ -1912,7 +1912,7 @@ void Debug::CallEventCallback(v8::DebugEvent event, MaybeHandle result = Execution::Call(isolate_, Handle::cast(event_listener_), global, arraysize(argv), argv); - CHECK(!result.is_null()); // Listeners may not throw. + CHECK(!result.is_null()); // Listeners must not throw. } in_debug_event_listener_ = previous; } diff --git a/test/mjsunit/debug-set-variable-value.js b/test/mjsunit/debug-set-variable-value.js index 65434289d0..6f872dfecf 100644 --- a/test/mjsunit/debug-set-variable-value.js +++ b/test/mjsunit/debug-set-variable-value.js @@ -63,7 +63,7 @@ function RunPauseTest(scope_number, expected_old_result, variable_name, // Add the debug event listener. Debug.setListener(listener); - var actual_new_value; + var actual_new_result; try { actual_new_result = fun(); } finally { @@ -78,7 +78,7 @@ function RunPauseTest(scope_number, expected_old_result, variable_name, assertEquals(expected_new_result, actual_new_result); } -// Accepts a closure 'fun' that returns a variable from it's outer scope. +// Accepts a closure 'fun' that returns a variable from its outer scope. // The test changes the value of variable via the handle to function and checks // that the return value changed accordingly. function RunClosureTest(scope_number, expected_old_result, variable_name, @@ -307,3 +307,32 @@ assertSame(Number, DebugCommandProcessor.resolveValue_( {handle: Debug.MakeMirror(Number).handle()})); assertSame(RunClosureTest, DebugCommandProcessor.resolveValue_( {handle: Debug.MakeMirror(RunClosureTest).handle()})); + + +// Test script-scope variable. +let abc = 12; +{ + let exception; + function listener(event, exec_state) { + try { + if (event == Debug.DebugEvent.Break) { + let scope_count = exec_state.frame().scopeCount(); + let script_scope = exec_state.frame().scope(scope_count - 2); + assertTrue(script_scope.isScope()); + assertEquals(debug.ScopeType.Script, script_scope.scopeType()); + script_scope.setVariableValue('abc', 42); + } + } catch(e) { exception = e } + } + + Debug.setListener(listener); + assertEquals(12, abc); + debugger; + assertEquals(42, abc); + + if (exception != null) { + assertUnreachable("Exception in listener\n" + exception.stack); + } +} + +Debug.setListener(null);