From 7531960f4e420e4e0ded48996b6ee5633b1e1266 Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 24 Dec 2019 11:35:29 +0100 Subject: [PATCH] fixes #83705 --- src/vs/workbench/contrib/debug/browser/debugService.ts | 2 +- .../workbench/contrib/debug/browser/debugTaskRunner.ts | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/debug/browser/debugService.ts b/src/vs/workbench/contrib/debug/browser/debugService.ts index e11852d3e88..62cbe5f78c9 100644 --- a/src/vs/workbench/contrib/debug/browser/debugService.ts +++ b/src/vs/workbench/contrib/debug/browser/debugService.ts @@ -675,13 +675,13 @@ export class DebugService implements IDebugService { } stopSession(session: IDebugSession): Promise { - if (session) { return session.terminate(); } const sessions = this.model.getSessions(); if (sessions.length === 0) { + this.taskRunner.cancel(); this.endInitializingState(); } diff --git a/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts b/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts index 19e63db2dac..f4e6bad2774 100644 --- a/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts +++ b/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts @@ -38,6 +38,8 @@ export const enum TaskRunResult { export class DebugTaskRunner { + private canceled = false; + constructor( @ITaskService private readonly taskService: ITaskService, @IMarkerService private readonly markerService: IMarkerService, @@ -46,9 +48,17 @@ export class DebugTaskRunner { @IDialogService private readonly dialogService: IDialogService, ) { } + cancel(): void { + this.canceled = true; + } + async runTaskAndCheckErrors(root: IWorkspaceFolder | IWorkspace | undefined, taskId: string | TaskIdentifier | undefined, onError: (msg: string, actions: IAction[]) => Promise): Promise { try { + this.canceled = false; const taskSummary = await this.runTask(root, taskId); + if (this.canceled) { + return TaskRunResult.Failure; + } const errorCount = taskId ? this.markerService.getStatistics().errors : 0; const successExitCode = taskSummary && taskSummary.exitCode === 0;