// 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. let {session, contextGroup, Protocol} = InspectorTest.start('Checks that we can update return value on pause'); InspectorTest.runAsyncTestSuite([ async function testError() { Protocol.Debugger.enable(); let evaluation = Protocol.Runtime.evaluate({ expression: 'function foo() { debugger; } foo()', returnByValue: true }); let {params:{callFrames}} = await Protocol.Debugger.oncePaused(); InspectorTest.log('Set return value not at return position'); let result = await Protocol.Debugger.setReturnValue({ newValue: { value: 42 }, }); InspectorTest.logMessage(result); await Protocol.Debugger.disable(); }, async function testUndefined() { Protocol.Debugger.enable(); let evaluation = Protocol.Runtime.evaluate({ expression: 'function foo() { debugger; } foo()', returnByValue: true }); InspectorTest.log('Break at return position..'); await Protocol.Debugger.oncePaused(); Protocol.Debugger.stepInto(); let {params:{callFrames}} = await Protocol.Debugger.oncePaused(); InspectorTest.log('Update return value to 42..'); Protocol.Debugger.setReturnValue({ newValue: { value: 42 }, }); Protocol.Debugger.resume(); let {result} = await evaluation; InspectorTest.log('Dump actual return value'); InspectorTest.logMessage(result); await Protocol.Debugger.disable(); }, async function testArrow() { Protocol.Debugger.enable(); Protocol.Debugger.pause(); let evaluation = Protocol.Runtime.evaluate({ expression: '(() => 42)()', returnByValue: true }); InspectorTest.log('Break at return position..'); await Protocol.Debugger.oncePaused(); Protocol.Debugger.stepInto(); await Protocol.Debugger.oncePaused(); Protocol.Debugger.stepInto(); let {params:{callFrames}} = await Protocol.Debugger.oncePaused(); InspectorTest.log('Update return value to 239..'); Protocol.Debugger.setReturnValue({ newValue: { value: 239 }, }); Protocol.Debugger.resume(); let {result} = await evaluation; InspectorTest.log('Dump actual return value'); InspectorTest.logMessage(result); await Protocol.Debugger.disable(); } ]);