From 0851a2aa301bc0380ddac3039c59d20f8cd055e4 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Mon, 3 Apr 2017 12:21:38 +0200 Subject: [PATCH] Fixes #23756: Insiders can't find existing preLaunchTask --- .../electron-browser/task.contribution.ts | 76 ++++++++++--------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index e6b6180bfcf..5d7a270ddee 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -893,52 +893,54 @@ class TaskService extends EventEmitter implements ITaskService { } private computeWorkspaceTasks(): TPromise { - let { config, hasParseErrors } = this.getConfiguration(); - if (hasParseErrors) { - return TPromise.as({ taskSet: undefined, hasErrors: true }); - } let configPromise: TPromise<{ config: TaskConfig.ExternalTaskRunnerConfiguration; hasErrors: boolean }>; - if (config) { - let engine = TaskConfig.ExecutionEngine.from(config); - if (engine === ExecutionEngine.Process && this.hasDetectorSupport(config)) { - configPromise = new ProcessRunnerDetector(this.fileService, this.contextService, this.configurationResolverService, config).detect(true).then((value) => { - let hasErrors = this.printStderr(value.stderr); - let detectedConfig = value.config; - if (!detectedConfig) { - return config; - } - let result: TaskConfig.ExternalTaskRunnerConfiguration = Objects.clone(config); - let configuredTasks: IStringDictionary = Object.create(null); - if (!result.tasks) { - if (detectedConfig.tasks) { - result.tasks = detectedConfig.tasks; + { + let { config, hasParseErrors } = this.getConfiguration(); + if (hasParseErrors) { + return TPromise.as({ taskSet: undefined, hasErrors: true }); + } + if (config) { + let engine = TaskConfig.ExecutionEngine.from(config); + if (engine === ExecutionEngine.Process && this.hasDetectorSupport(config)) { + configPromise = new ProcessRunnerDetector(this.fileService, this.contextService, this.configurationResolverService, config).detect(true).then((value) => { + let hasErrors = this.printStderr(value.stderr); + let detectedConfig = value.config; + if (!detectedConfig) { + return config; } - } else { - result.tasks.forEach(task => configuredTasks[task.taskName] = task); - detectedConfig.tasks.forEach((task) => { - if (!configuredTasks[task.taskName]) { - result.tasks.push(task); + let result: TaskConfig.ExternalTaskRunnerConfiguration = Objects.clone(config); + let configuredTasks: IStringDictionary = Object.create(null); + if (!result.tasks) { + if (detectedConfig.tasks) { + result.tasks = detectedConfig.tasks; } - }); - } - return { config: result, hasErrors }; - }); + } else { + result.tasks.forEach(task => configuredTasks[task.taskName] = task); + detectedConfig.tasks.forEach((task) => { + if (!configuredTasks[task.taskName]) { + result.tasks.push(task); + } + }); + } + return { config: result, hasErrors }; + }); + } else { + configPromise = TPromise.as({ config, hasErrors: false }); + } } else { - configPromise = TPromise.as({ config, hasErrors: false }); + configPromise = new ProcessRunnerDetector(this.fileService, this.contextService, this.configurationResolverService).detect(true).then((value) => { + let hasErrors = this.printStderr(value.stderr); + return { config: value.config, hasErrors }; + }); } - } else { - configPromise = new ProcessRunnerDetector(this.fileService, this.contextService, this.configurationResolverService).detect(true).then((value) => { - let hasErrors = this.printStderr(value.stderr); - return { config: value.config, hasErrors }; - }); } - return configPromise.then((value) => { + return configPromise.then((resolved) => { return ProblemMatcherRegistry.onReady().then(() => { - if (!value || !value.config) { - return { taskSet: undefined, hasErrors: value !== void 0 ? value.hasErrors : false }; + if (!resolved || !resolved.config) { + return { taskSet: undefined, hasErrors: resolved !== void 0 ? resolved.hasErrors : false }; } let problemReporter = new ProblemReporter(this.outputChannel); - let parseResult = TaskConfig.parse(config, problemReporter); + let parseResult = TaskConfig.parse(resolved.config, problemReporter); let hasErrors = false; if (!parseResult.validationStatus.isOK()) { hasErrors = true; -- GitLab