diff --git a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts index cec4dff9092e6e98dbf098075528e59657903142..7f8e5191ea9561ec6bc0522cf3c731f03a264faa 100644 --- a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts +++ b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts @@ -1054,8 +1054,8 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer } }); let resolver: ITaskResolver = { - resolve: (workspaceFolder: IWorkspaceFolder, alias: string) => { - let data = resolverData.get(workspaceFolder.uri.toString()); + resolve: (uri: URI, alias: string) => { + let data = resolverData.get(uri.toString()); if (!data) { return undefined; } @@ -1086,7 +1086,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer { reevaluateOnRerun: true }, { identifier: id, - dependsOn: extensionTasks.map((extensionTask) => { return { workspaceFolder: extensionTask.getWorkspaceFolder()!, task: extensionTask._id }; }), + dependsOn: extensionTasks.map((extensionTask) => { return { uri: extensionTask.getWorkspaceFolder()!.uri, task: extensionTask._id }; }), name: id, } ); @@ -1119,9 +1119,10 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer } } }); + return { - resolve: (workspaceFolder: IWorkspaceFolder, identifier: string | TaskIdentifier | undefined) => { - let data = resolverData.get(workspaceFolder.uri.toString()); + resolve: (uri: URI, identifier: string | TaskIdentifier | undefined) => { + let data = uri ? resolverData.get(uri.toString()) : undefined; if (!data || !identifier) { return undefined; } @@ -1949,7 +1950,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer let resolver = this.createResolver(grouped); let folders = this.contextService.getWorkspace().folders; for (let folder of folders) { - let task = resolver.resolve(folder, identifier); + let task = resolver.resolve(folder.uri, identifier); if (task) { this.run(task).then(undefined, reason => { // eat the error, it has already been surfaced to the user and we don't care about it here diff --git a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts index 62f8180824ba0cd6fffd2d188dddd638488ff8c0..6d975b4149de434625e10a1f76880086f36de6e8 100644 --- a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts +++ b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts @@ -347,7 +347,7 @@ export class TerminalTaskSystem implements ITaskSystem { let promises: Promise[] = []; if (task.configurationProperties.dependsOn) { for (const dependency of task.configurationProperties.dependsOn) { - let dependencyTask = resolver.resolve(dependency.workspaceFolder, dependency.task!); + let dependencyTask = resolver.resolve(dependency.uri, dependency.task!); if (dependencyTask) { let key = dependencyTask.getMapKey(); let promise = this.activeTasks[key] ? this.activeTasks[key].promise : undefined; @@ -363,7 +363,7 @@ export class TerminalTaskSystem implements ITaskSystem { this.log(nls.localize('dependencyFailed', 'Couldn\'t resolve dependent task \'{0}\' in workspace folder \'{1}\'', Types.isString(dependency.task) ? dependency.task : JSON.stringify(dependency.task, undefined, 0), - dependency.workspaceFolder.name + dependency.uri.toString() )); this.showOutput(); } diff --git a/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts b/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts index fa7fbeb3133329d9be7eb6757982d22419f2f66a..be9cb7c97fc4349153693bc689009967d8b339ee 100644 --- a/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts +++ b/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts @@ -1226,9 +1226,12 @@ namespace GroupKind { namespace TaskDependency { export function from(this: void, external: string | TaskIdentifier, context: ParseContext): Tasks.TaskDependency | undefined { if (Types.isString(external)) { - return { workspaceFolder: context.workspaceFolder, task: external }; + return { uri: context.workspace && context.workspace.configuration ? context.workspace.configuration : context.workspaceFolder.uri, task: external }; } else if (TaskIdentifier.is(external)) { - return { workspaceFolder: context.workspaceFolder, task: Tasks.TaskDefinition.createTaskIdentifier(external as Tasks.TaskIdentifier, context.problemReporter) }; + return { + uri: context.workspace && context.workspace.configuration ? context.workspace.configuration : context.workspaceFolder.uri, + task: Tasks.TaskDefinition.createTaskIdentifier(external as Tasks.TaskIdentifier, context.problemReporter) + }; } else { return undefined; } diff --git a/src/vs/workbench/contrib/tasks/common/taskSystem.ts b/src/vs/workbench/contrib/tasks/common/taskSystem.ts index 9c9654adbf663486282ac19ee9ee10fb37a6d6d2..887c3f288bf63e3809fbd19c966d58c277ddbaa2 100644 --- a/src/vs/workbench/contrib/tasks/common/taskSystem.ts +++ b/src/vs/workbench/contrib/tasks/common/taskSystem.ts @@ -93,7 +93,7 @@ export interface ITaskExecuteResult { } export interface ITaskResolver { - resolve(workspaceFolder: IWorkspaceFolder, identifier: string | KeyedTaskIdentifier | undefined): Task | undefined; + resolve(uri: URI, identifier: string | KeyedTaskIdentifier | undefined): Task | undefined; } export interface TaskTerminateResponse extends TerminateResponse { diff --git a/src/vs/workbench/contrib/tasks/common/tasks.ts b/src/vs/workbench/contrib/tasks/common/tasks.ts index 66a00708221e73fd4b2f806306b198f8d656cf95..0509e545b2dbd35386ff73b8f528732beb67eaab 100644 --- a/src/vs/workbench/contrib/tasks/common/tasks.ts +++ b/src/vs/workbench/contrib/tasks/common/tasks.ts @@ -8,7 +8,7 @@ import * as Types from 'vs/base/common/types'; import * as resources from 'vs/base/common/resources'; import { IJSONSchemaMap } from 'vs/base/common/jsonSchema'; import * as Objects from 'vs/base/common/objects'; -import { UriComponents } from 'vs/base/common/uri'; +import { UriComponents, URI } from 'vs/base/common/uri'; import { ProblemMatcher } from 'vs/workbench/contrib/tasks/common/problemMatcher'; import { IWorkspaceFolder, IWorkspace } from 'vs/platform/workspace/common/workspace'; @@ -438,7 +438,7 @@ export interface KeyedTaskIdentifier extends TaskIdentifier { } export interface TaskDependency { - workspaceFolder: IWorkspaceFolder; + uri: URI; task: string | KeyedTaskIdentifier | undefined; }