提交 0851a2aa 编写于 作者: D Dirk Baeumer

Fixes #23756: Insiders can't find existing preLaunchTask

上级 11a11588
......@@ -893,52 +893,54 @@ class TaskService extends EventEmitter implements ITaskService {
}
private computeWorkspaceTasks(): TPromise<WorkspaceTaskResult> {
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<TaskConfig.TaskDescription> = 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<TaskConfig.TaskDescription> = 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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册