ea3ee6da79
When setting a breakpoint on a line (in the DevTools front-end), the front-end sends a columnNumber of 0 and the inspector automatically resolves the actual location (in bytecode execution order). In order to also support changing source code, the inspector memorizes a text hint, and uses that to adjust the location upon reload. This hint was however taken based on the original line and column numbers, rather than the resolved location, which causes trouble when syntactic order doesn't match execution order, as in case of `await o.m()`. In order to address that we now remember the textual hint based on the resolved location. Fixed: chromium:1081162 Also-By: kimanh@chromium.org Change-Id: I7d08373440693b7abc18c29c1a05929d771d3031 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2905606 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Kim-Anh Tran <kimanh@chromium.org> Cr-Commit-Position: refs/heads/master@{#74675}
31 lines
1.1 KiB
JavaScript
31 lines
1.1 KiB
JavaScript
// Copyright 2021 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('Regression test for crbug/1081162');
|
|
|
|
const source = `
|
|
async function foo(o) {
|
|
await o.bar();
|
|
}
|
|
`;
|
|
const url = 'v8://test/foo.js';
|
|
|
|
session.setupScriptMap();
|
|
|
|
InspectorTest.runAsyncTestSuite([
|
|
async function testBreakpointResolved() {
|
|
await Protocol.Debugger.enable();
|
|
contextGroup.addScript(source, 0, 0, url);
|
|
await Protocol.Debugger.onceScriptParsed();
|
|
let {result: {locations: [location]}} = await Protocol.Debugger.setBreakpointByUrl({url, lineNumber: 2, columnNumber: 0});
|
|
InspectorTest.log('After Debugger.setBreakpointByUrl');
|
|
await session.logSourceLocation(location);
|
|
contextGroup.addScript(source, 0, 0, url);
|
|
({params: {location}} = await Protocol.Debugger.onceBreakpointResolved());
|
|
InspectorTest.log('After Debugger.breakpointResolved');
|
|
await session.logSourceLocation(location);
|
|
await Protocol.Debugger.disable();
|
|
}
|
|
]);
|