From 6ef6604aa7229297f5c5859af094f994f06987a1 Mon Sep 17 00:00:00 2001 From: Paul LeMarquand Date: Wed, 3 Dec 2025 13:39:56 -0500 Subject: [PATCH] Use `vscode.Disposable.from` instead of `compositeDisposable` Clean up the codebase so that it uses the built in `vscode.Disposable.from` to dispose multiple disposables at the same time. This replaces our own `compositeDisposable` method. Docs here: https://code.visualstudio.com/api/references/vscode-api#Disposable --- src/TestExplorer/TestExplorer.ts | 6 +++--- src/debugger/debugAdapterFactory.ts | 7 +------ src/debugger/logTracker.ts | 6 +----- src/utilities/utilities.ts | 13 ------------- 4 files changed, 5 insertions(+), 27 deletions(-) diff --git a/src/TestExplorer/TestExplorer.ts b/src/TestExplorer/TestExplorer.ts index 271a18005..94d70dff3 100644 --- a/src/TestExplorer/TestExplorer.ts +++ b/src/TestExplorer/TestExplorer.ts @@ -21,7 +21,7 @@ import { SwiftLogger } from "../logging/SwiftLogger"; import { buildOptions, getBuildAllTask } from "../tasks/SwiftTaskProvider"; import { TaskManager } from "../tasks/TaskManager"; import { SwiftExecOperation, TaskOperation } from "../tasks/TaskQueue"; -import { compositeDisposable, getErrorDescription } from "../utilities/utilities"; +import { getErrorDescription } from "../utilities/utilities"; import { Version } from "../utilities/version"; import { parseTestsFromDocumentSymbols } from "./DocumentSymbolTestDiscovery"; import { LSPTestDiscovery } from "./LSPTestDiscovery"; @@ -208,7 +208,7 @@ export class TestExplorer { } }); - return compositeDisposable(endProcessDisposable, didChangeSwiftFileDisposable); + return vscode.Disposable.from(endProcessDisposable, didChangeSwiftFileDisposable); } /** @@ -229,7 +229,7 @@ export class TestExplorer { break; } }); - return compositeDisposable(tokenSource, disposable); + return vscode.Disposable.from(tokenSource, disposable); } /** diff --git a/src/debugger/debugAdapterFactory.ts b/src/debugger/debugAdapterFactory.ts index eca0a3f83..b14182533 100644 --- a/src/debugger/debugAdapterFactory.ts +++ b/src/debugger/debugAdapterFactory.ts @@ -55,12 +55,7 @@ export function registerDebugger(workspaceContext: WorkspaceContext): vscode.Dis register(); } - return { - dispose: () => { - configurationEvent.dispose(); - subscriptions.map(sub => sub.dispose()); - }, - }; + return vscode.Disposable.from(configurationEvent, ...subscriptions); } /** diff --git a/src/debugger/logTracker.ts b/src/debugger/logTracker.ts index 5b34b9c27..18232b891 100644 --- a/src/debugger/logTracker.ts +++ b/src/debugger/logTracker.ts @@ -54,11 +54,7 @@ export function registerLoggingDebugAdapterTracker(): vscode.Disposable { ]; // Return a disposable that cleans everything up. - return { - dispose() { - subscriptions.forEach(sub => sub.dispose()); - }, - }; + return vscode.Disposable.from(...subscriptions); } /** diff --git a/src/utilities/utilities.ts b/src/utilities/utilities.ts index 44f6e7219..e8dadded2 100644 --- a/src/utilities/utilities.ts +++ b/src/utilities/utilities.ts @@ -457,16 +457,3 @@ export function destructuredPromise(): { return { promise: p, resolve: resolve!, reject: reject! }; } /* eslint-enable @typescript-eslint/no-explicit-any */ - -/** - * Creates a composite disposable from multiple disposables. - * @param disposables The disposables to include. - * @returns A composite disposable that disposes all included disposables. - */ -export function compositeDisposable(...disposables: vscode.Disposable[]): vscode.Disposable { - return { - dispose: () => { - disposables.forEach(d => d.dispose()); - }, - }; -}