Index: test/inspector/debugger/side-effect-free-debug-evaluate.js |
diff --git a/test/inspector/debugger/side-effect-free-debug-evaluate.js b/test/inspector/debugger/side-effect-free-debug-evaluate.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..18ea6fba27b78efa1f73fcab2c6d0e46ba2c5383 |
--- /dev/null |
+++ b/test/inspector/debugger/side-effect-free-debug-evaluate.js |
@@ -0,0 +1,56 @@ |
+// Copyright 2017 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Flags: --ignition |
+ |
+InspectorTest.addScript(` |
+function testFunction() |
+{ |
+ var o = 0; |
+ function f() { return 1; } |
+ function g() { o = 2; return o; } |
+ debugger; |
+} |
+//# sourceURL=foo.js`); |
+ |
+Protocol.Debugger.enable(); |
+ |
+Protocol.Debugger.oncePaused().then(debuggerPaused); |
+ |
+Protocol.Runtime.evaluate({ "expression": "setTimeout(testFunction, 0)" }); |
+ |
+var topFrameId; |
+ |
+function debuggerPaused(messageObject) |
+{ |
+ InspectorTest.log("Paused on 'debugger;'"); |
+ |
+ topFrameId = messageObject.params.callFrames[0].callFrameId; |
+ Protocol.Debugger.evaluateOnCallFrame({ callFrameId: topFrameId, expression: "f()"}).then(evaluatedFirst); |
+} |
+ |
+function evaluatedFirst(response) |
+{ |
+ InspectorTest.log("f() returns " + response.result.result.value); |
+ Protocol.Debugger.evaluateOnCallFrame({ callFrameId: topFrameId, expression: "g()"}).then(evaluatedSecond); |
+} |
+ |
+function evaluatedSecond(response) |
+{ |
+ InspectorTest.log("g() returns " + response.result.result.value); |
+ Protocol.Debugger.evaluateOnCallFrame({ callFrameId: topFrameId, expression: "f()", throwOnSideEffect: true}).then(evaluatedThird); |
+} |
+ |
+function evaluatedThird(response) |
+{ |
+ InspectorTest.log("f() returns " + response.result.result.value); |
+ Protocol.Debugger.evaluateOnCallFrame({ callFrameId: topFrameId, expression: "g()", throwOnSideEffect: true}).then(evaluatedFourth); |
+ InspectorTest.completeTest(); |
+} |
+ |
+function evaluatedFourth(response) |
+{ |
+ InspectorTest.log("g() throws " + response.result.result.className); |
+ InspectorTest.completeTest(); |
+} |