提交 f9281d83 编写于 作者: I isidor

debug: simplify setting breakpoint session data

上级 9c9e3164
......@@ -196,7 +196,6 @@ export class SelectAndStartAction extends AbstractDebugAction {
@IQuickOpenService private quickOpenService: IQuickOpenService
) {
super(id, label, undefined, debugService, keybindingService);
this.quickOpenService = quickOpenService;
}
public run(): TPromise<any> {
......
......@@ -116,8 +116,6 @@ export interface IDebugger {
getCustomTelemetryService(): TPromise<TelemetryService>;
}
export type ActualBreakpoints = { [id: string]: DebugProtocol.Breakpoint };
export enum State {
Inactive,
Initializing,
......@@ -186,8 +184,8 @@ export interface IDebugSession extends ITreeElement {
terminate(restart?: boolean /* false */): TPromise<void>;
disconnect(restart?: boolean /* false */): TPromise<void>;
sendBreakpoints(modelUri: uri, bpts: IBreakpoint[], sourceModified: boolean): TPromise<ActualBreakpoints | undefined>;
sendFunctionBreakpoints(fbps: IFunctionBreakpoint[]): TPromise<ActualBreakpoints | undefined>;
sendBreakpoints(modelUri: uri, bpts: IBreakpoint[], sourceModified: boolean): TPromise<void>;
sendFunctionBreakpoints(fbps: IFunctionBreakpoint[]): TPromise<void>;
sendExceptionBreakpoints(exbpts: IExceptionBreakpoint[]): TPromise<void>;
stackTrace(threadId: number, startFrame: number, levels: number): TPromise<DebugProtocol.StackTraceResponse>;
......
......@@ -871,13 +871,9 @@ export class DebugService implements IDebugService {
const breakpointsToSend = this.model.getBreakpoints({ uri: modelUri, enabledOnly: true });
return this.sendToOneOrAllSessions(session, s => {
return s.sendBreakpoints(modelUri, breakpointsToSend, sourceModified).then(data => {
if (data) {
this.model.setBreakpointSessionData(s.getId(), data);
}
});
});
return this.sendToOneOrAllSessions(session, s =>
s.sendBreakpoints(modelUri, breakpointsToSend, sourceModified)
);
}
private sendFunctionBreakpoints(session?: IDebugSession): TPromise<void> {
......@@ -885,11 +881,7 @@ export class DebugService implements IDebugService {
const breakpointsToSend = this.model.getFunctionBreakpoints().filter(fbp => fbp.enabled && this.model.areBreakpointsActivated());
return this.sendToOneOrAllSessions(session, s => {
return s.capabilities.supportsFunctionBreakpoints ? s.sendFunctionBreakpoints(breakpointsToSend).then(data => {
if (data) {
this.model.setBreakpointSessionData(s.getId(), data);
}
}) : Promise.resolve(undefined);
return s.capabilities.supportsFunctionBreakpoints ? s.sendFunctionBreakpoints(breakpointsToSend) : Promise.resolve(undefined);
});
}
......
......@@ -13,7 +13,7 @@ import { Event, Emitter } from 'vs/base/common/event';
import { CompletionItem, completionKindFromLegacyString } from 'vs/editor/common/modes';
import { Position } from 'vs/editor/common/core/position';
import * as aria from 'vs/base/browser/ui/aria/aria';
import { IDebugSession, IConfig, IThread, IRawModelUpdate, IDebugService, IRawStoppedDetails, State, LoadedSourceEvent, IFunctionBreakpoint, IExceptionBreakpoint, ActualBreakpoints, IBreakpoint, IExceptionInfo, AdapterEndEvent, IDebugger, VIEWLET_ID, IDebugConfiguration, IReplElement, IStackFrame, IExpression, IReplElementSource } from 'vs/workbench/parts/debug/common/debug';
import { IDebugSession, IConfig, IThread, IRawModelUpdate, IDebugService, IRawStoppedDetails, State, LoadedSourceEvent, IFunctionBreakpoint, IExceptionBreakpoint, IBreakpoint, IExceptionInfo, AdapterEndEvent, IDebugger, VIEWLET_ID, IDebugConfiguration, IReplElement, IStackFrame, IExpression, IReplElementSource } from 'vs/workbench/parts/debug/common/debug';
import { Source } from 'vs/workbench/parts/debug/common/debugSource';
import { mixin } from 'vs/base/common/objects';
import { Thread, ExpressionContainer, DebugModel } from 'vs/workbench/parts/debug/common/debugModel';
......@@ -230,7 +230,7 @@ export class DebugSession implements IDebugSession {
return Promise.reject(new Error('no debug adapter'));
}
sendBreakpoints(modelUri: URI, breakpointsToSend: IBreakpoint[], sourceModified: boolean): TPromise<ActualBreakpoints | undefined> {
sendBreakpoints(modelUri: URI, breakpointsToSend: IBreakpoint[], sourceModified: boolean): TPromise<void> {
if (!this.raw) {
return Promise.reject(new Error('no debug adapter'));
......@@ -261,35 +261,34 @@ export class DebugSession implements IDebugSession {
breakpoints: breakpointsToSend.map(bp => ({ line: bp.lineNumber, column: bp.column, condition: bp.condition, hitCondition: bp.hitCondition, logMessage: bp.logMessage })),
sourceModified
}).then(response => {
if (response && response.body) {
const data: ActualBreakpoints = Object.create(null);
const data: { [id: string]: DebugProtocol.Breakpoint } = Object.create(null);
for (let i = 0; i < breakpointsToSend.length; i++) {
data[breakpointsToSend[i].getId()] = response.body.breakpoints[i];
}
this.model.setBreakpointSessionData(this.getId(), data);
return data;
}
return undefined;
});
}
sendFunctionBreakpoints(fbpts: IFunctionBreakpoint[]): TPromise<ActualBreakpoints | undefined> {
sendFunctionBreakpoints(fbpts: IFunctionBreakpoint[]): TPromise<void> {
if (this.raw) {
if (this.raw.readyForBreakpoints) {
return this.raw.setFunctionBreakpoints({ breakpoints: fbpts }).then(response => {
if (response && response.body) {
const data: ActualBreakpoints = Object.create(null);
const data: { [id: string]: DebugProtocol.Breakpoint } = Object.create(null);
for (let i = 0; i < fbpts.length; i++) {
data[fbpts[i].getId()] = response.body.breakpoints[i];
}
return data;
this.model.setBreakpointSessionData(this.getId(), data);
}
return undefined;
});
}
return Promise.resolve(undefined);
return TPromise.as(undefined);
}
return Promise.reject(new Error('no debug adapter'));
}
......
......@@ -8,7 +8,7 @@ import { Event } from 'vs/base/common/event';
import { TPromise } from 'vs/base/common/winjs.base';
import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace';
import { Position } from 'vs/editor/common/core/position';
import { ILaunch, IDebugService, State, IDebugSession, IConfigurationManager, IStackFrame, IBreakpointData, IBreakpointUpdateData, IConfig, IDebugModel, IViewModel, IBreakpoint, LoadedSourceEvent, IThread, IRawModelUpdate, ActualBreakpoints, IFunctionBreakpoint, IExceptionBreakpoint, IDebugger, IExceptionInfo, AdapterEndEvent, IReplElement, IExpression, IReplElementSource } from 'vs/workbench/parts/debug/common/debug';
import { ILaunch, IDebugService, State, IDebugSession, IConfigurationManager, IStackFrame, IBreakpointData, IBreakpointUpdateData, IConfig, IDebugModel, IViewModel, IBreakpoint, LoadedSourceEvent, IThread, IRawModelUpdate, IFunctionBreakpoint, IExceptionBreakpoint, IDebugger, IExceptionInfo, AdapterEndEvent, IReplElement, IExpression, IReplElementSource } from 'vs/workbench/parts/debug/common/debug';
import { Source } from 'vs/workbench/parts/debug/common/debugSource';
import { CompletionItem } from 'vs/editor/common/modes';
import Severity from 'vs/base/common/severity';
......@@ -209,10 +209,10 @@ export class MockSession implements IDebugSession {
restart(): TPromise<void> {
throw new Error('Method not implemented.');
}
sendBreakpoints(modelUri: uri, bpts: IBreakpoint[], sourceModified: boolean): TPromise<ActualBreakpoints> {
sendBreakpoints(modelUri: uri, bpts: IBreakpoint[], sourceModified: boolean): TPromise<void> {
throw new Error('Method not implemented.');
}
sendFunctionBreakpoints(fbps: IFunctionBreakpoint[]): TPromise<ActualBreakpoints> {
sendFunctionBreakpoints(fbps: IFunctionBreakpoint[]): TPromise<void> {
throw new Error('Method not implemented.');
}
sendExceptionBreakpoints(exbpts: IExceptionBreakpoint[]): TPromise<void> {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册