mirror of
https://github.com/nodejs/node.git
synced 2025-05-17 10:27:12 +00:00

PR-URL: https://github.com/nodejs/node/pull/45230 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
// Copyright 2020 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.
|
|
|
|
const {session, contextGroup, Protocol} =
|
|
InspectorTest.start('Check that setScriptSource doesn\'t affect debug-evaluate block listing');
|
|
|
|
const script = `
|
|
// INSERT NEWLINES HERE
|
|
function f() {
|
|
let a = 3; () => a; // context allocated.
|
|
return function g() {
|
|
let a = 42; // stack-allocated. Shadowing context-allocated from f.
|
|
return function h() {
|
|
// Give h a context.
|
|
let x = 5; () => x;
|
|
return function i() {
|
|
debugger;
|
|
};
|
|
};
|
|
};
|
|
}
|
|
(((f())())())();
|
|
`;
|
|
|
|
const updatedScript = script.replace('// INSERT NEWLINES HERE', '\n\n\n');
|
|
|
|
(async function test() {
|
|
await Protocol.Debugger.enable();
|
|
await Protocol.Runtime.enable();
|
|
const promise = Protocol.Debugger.oncePaused();
|
|
|
|
contextGroup.addScript(script);
|
|
|
|
const { params: { callFrames: [{ callFrameId, functionLocation: { scriptId } }] } } = await promise;
|
|
|
|
// Create a closure that returns `a` and stash it on the global.
|
|
await Protocol.Debugger.evaluateOnCallFrame({
|
|
callFrameId,
|
|
expression: `globalThis['foo'] = () => a;`
|
|
});
|
|
await Protocol.Debugger.resume();
|
|
|
|
// Expect a ReferenceError.
|
|
const { result: { result: result1 } } = await Protocol.Runtime.evaluate({
|
|
expression: 'globalThis.foo();'
|
|
});
|
|
InspectorTest.logMessage(result1);
|
|
|
|
// Move function 'h' but don't change it.
|
|
const { result: { status } } = await Protocol.Debugger.setScriptSource({
|
|
scriptId,
|
|
scriptSource: updatedScript,
|
|
});
|
|
InspectorTest.log(`Debugger.setScriptSource: ${status}`);
|
|
|
|
// Still expect a ReferenceError.
|
|
const { result: { result: result2 } } = await Protocol.Runtime.evaluate({
|
|
expression: 'globalThis.foo();'
|
|
});
|
|
InspectorTest.logMessage(result2);
|
|
|
|
InspectorTest.completeTest();
|
|
})();
|