提交 8e8f4b00 编写于 作者: A Andre Weinand

fix bogus breakpoint position; fixes #39665

上级 1738c3e6
......@@ -111,10 +111,8 @@ export class MainThreadDebugService implements MainThreadDebugServiceShape {
condition: sbp.condition,
hitCondition: bp.hitCondition,
sourceUriStr: sbp.uri.toString(),
location: {
line: sbp.lineNumber,
character: sbp.column
}
line: sbp.lineNumber > 0 ? sbp.lineNumber - 1 : 0,
character: (typeof sbp.column === 'number' && sbp.column > 0) ? sbp.column - 1 : 0
};
}
});
......
......@@ -636,7 +636,8 @@ export interface IBreakpointData {
export interface ISourceBreakpointData extends IBreakpointData {
type: 'source';
sourceUriStr: string;
location: vscode.Position;
line: number;
character: number;
}
export interface IFunctionBreakpointData extends IBreakpointData {
......
......@@ -12,7 +12,7 @@ import { ExtHostWorkspace } from 'vs/workbench/api/node/extHostWorkspace';
import * as vscode from 'vscode';
import URI from 'vs/base/common/uri';
import * as types from 'vs/workbench/api/node/extHostTypes';
import { Disposable, Position } from 'vs/workbench/api/node/extHostTypes';
export class ExtHostDebugService implements ExtHostDebugServiceShape {
......@@ -103,9 +103,9 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape {
if (delta.added) {
a = delta.added.map(bpd => {
const id = bpd.id;
this._breakpoints.set(id, this.fromWire(bpd));
return bpd;
const bp = this.fromWire(bpd);
this._breakpoints.set(bpd.id, bp);
return bp;
});
}
......@@ -121,9 +121,7 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape {
if (delta.changed) {
c = delta.changed.map(bpd => {
const id = bpd.id;
this._breakpoints.set(id, this.fromWire(bpd));
return bpd;
return extendObject(this._breakpoints.get(bpd.id), this.fromWire(bpd));
});
}
......@@ -135,24 +133,37 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape {
}
private fromWire(bp: ISourceBreakpointData | IFunctionBreakpointData): vscode.Breakpoint {
delete bp.id;
if (bp.type === 'source') {
(<any>bp).source = URI.parse(bp.sourceUriStr);
delete bp.sourceUriStr;
if (bp.type === 'function') {
const fbp: vscode.FunctionBreakpoint = {
type: 'function',
enabled: bp.enabled,
condition: bp.condition,
hitCondition: bp.hitCondition,
functionName: bp.functionName
};
return fbp;
}
return bp;
const sbp: vscode.SourceBreakpoint = {
type: 'source',
enabled: bp.enabled,
condition: bp.condition,
hitCondition: bp.hitCondition,
source: URI.parse(bp.sourceUriStr),
location: new Position(bp.line, bp.character)
};
return sbp;
}
public registerDebugConfigurationProvider(type: string, provider: vscode.DebugConfigurationProvider): vscode.Disposable {
if (!provider) {
return new types.Disposable(() => { });
return new Disposable(() => { });
}
let handle = this.nextHandle();
this._handlers.set(handle, provider);
this._debugServiceProxy.$registerDebugConfigurationProvider(type, !!provider.provideDebugConfigurations, !!provider.resolveDebugConfiguration, handle);
return new types.Disposable(() => {
return new Disposable(() => {
this._handlers.delete(handle);
this._debugServiceProxy.$unregisterDebugConfigurationProvider(handle);
});
......@@ -299,3 +310,16 @@ export class ExtHostDebugConsole implements vscode.DebugConsole {
this.append(value + '\n');
}
}
/**
* Copy attributes from fromObject to toObject.
*/
export function extendObject<T>(toObject: T, fromObject: T): T {
for (let key in fromObject) {
if (fromObject.hasOwnProperty(key)) {
toObject[key] = fromObject[key];
}
}
return toObject;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册