Skip to content

Commit ae6370d

Browse files
committed
Have single instance of task provider
Match setup of plugin task provider
1 parent 1275cec commit ae6370d

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

src/WorkspaceContext.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import { DocCDocumentationRequest, ReIndexProjectRequest } from "./sourcekit-lsp
3535
import { TestKind } from "./TestExplorer/TestKind";
3636
import { isValidWorkspaceFolder, searchForPackages } from "./utilities/workspace";
3737
import { SwiftPluginTaskProvider } from "./tasks/SwiftPluginTaskProvider";
38+
import { SwiftTaskProvider } from "./tasks/SwiftTaskProvider";
3839

3940
/**
4041
* Context for whole workspace. Holds array of contexts for each workspace folder
@@ -49,6 +50,7 @@ export class WorkspaceContext implements vscode.Disposable {
4950
public languageClientManager: LanguageClientToolchainCoordinator;
5051
public tasks: TaskManager;
5152
public diagnostics: DiagnosticsManager;
53+
public taskProvider: SwiftTaskProvider;
5254
public pluginProvider: SwiftPluginTaskProvider;
5355
public subscriptions: vscode.Disposable[];
5456
public commentCompletionProvider: CommentCompletionProviders;
@@ -78,6 +80,7 @@ export class WorkspaceContext implements vscode.Disposable {
7880
this.languageClientManager = new LanguageClientToolchainCoordinator(this);
7981
this.tasks = new TaskManager(this);
8082
this.diagnostics = new DiagnosticsManager(this);
83+
this.taskProvider = new SwiftTaskProvider(this);
8184
this.pluginProvider = new SwiftPluginTaskProvider(this);
8285
this.documentation = new DocumentationManager(extensionContext, this);
8386
this.currentDocument = null;

src/extension.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import * as vscode from "vscode";
1919
import * as commands from "./commands";
2020
import * as debug from "./debugger/launch";
2121
import { ProjectPanelProvider } from "./ui/ProjectPanelProvider";
22-
import { SwiftTaskProvider } from "./tasks/SwiftTaskProvider";
2322
import { FolderEvent, FolderOperation, WorkspaceContext } from "./WorkspaceContext";
2423
import { FolderContext } from "./FolderContext";
2524
import { TestExplorer } from "./TestExplorer/TestExplorer";
@@ -96,7 +95,9 @@ export async function activate(context: vscode.ExtensionContext): Promise<Api> {
9695
context.subscriptions.push(new SelectedXcodeWatcher(outputChannel));
9796

9897
// Register task provider.
99-
context.subscriptions.push(SwiftTaskProvider.register(workspaceContext));
98+
context.subscriptions.push(
99+
vscode.tasks.registerTaskProvider("swift", workspaceContext.taskProvider)
100+
);
100101

101102
// Register swift plugin task provider.
102103
context.subscriptions.push(

src/tasks/SwiftTaskProvider.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,20 @@ const buildAllTaskCache = (() => {
121121
set(name: string, folderContext: FolderContext, task: SwiftTask) {
122122
cache.set(key(name, folderContext, task), task);
123123
},
124+
reset() {
125+
cache.clear();
126+
},
124127
};
125128
})();
126129

130+
/**
131+
* Should only be used for tests purposes
132+
*/
133+
export function resetBuildAllTaskCache() {
134+
// Don't want to expose the whole cache, just the reset
135+
buildAllTaskCache.reset();
136+
}
137+
127138
function buildAllTaskName(folderContext: FolderContext, release: boolean): string {
128139
let buildTaskName = release
129140
? `${SwiftTaskProvider.buildAllName} - Release`

0 commit comments

Comments
 (0)