提交 a1c5ded6 编写于 作者: M Matt Bierner

Remove n-arg version of dispose

This overload was not heavily used and added complexity
上级 6b7b5c0e
......@@ -15,22 +15,17 @@ export function isDisposable<E extends object>(thing: E): thing is E & IDisposab
}
export function dispose<T extends IDisposable>(disposable: T): T;
export function dispose<T extends IDisposable>(...disposables: Array<T | undefined>): T[];
export function dispose<T extends IDisposable>(disposable: T | undefined): T | undefined;
export function dispose<T extends IDisposable>(disposables: T[]): T[];
export function dispose<T extends IDisposable>(first: T | T[], ...rest: T[]): T | T[] | undefined {
if (Array.isArray(first)) {
first.forEach(d => d && d.dispose());
export function dispose<T extends IDisposable>(disposables: T | T[] | undefined): T | T[] | undefined {
if (Array.isArray(disposables)) {
disposables.forEach(d => d && d.dispose());
return [];
} else if (rest.length === 0) {
if (first) {
first.dispose();
return first;
}
return undefined;
} else if (disposables) {
disposables.dispose();
return disposables;
} else {
dispose(first);
dispose(rest);
return [];
return undefined;
}
}
......
......@@ -42,7 +42,8 @@ suite('Lifecycle', () => {
assert(!disposable.isDisposed);
assert(!disposable2.isDisposed);
dispose(disposable, disposable2);
dispose(disposable);
dispose(disposable2);
assert(disposable.isDisposed);
assert(disposable2.isDisposed);
......
......@@ -230,7 +230,10 @@ export class ReferenceWidget extends PeekViewWidget {
dispose(): void {
this.setModel(undefined);
this._callOnDispose = dispose(this._callOnDispose);
dispose<IDisposable>(this._preview, this._previewNotAvailableMessage, this._tree, this._previewModelReference);
dispose(this._preview);
dispose(this._previewNotAvailableMessage);
dispose(this._tree);
dispose(this._previewModelReference);
this._splitView.dispose();
super.dispose();
}
......
......@@ -4,15 +4,14 @@
*--------------------------------------------------------------------------------------------*/
import { RawContextKey, IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { IDisposable, dispose, Disposable } from 'vs/base/common/lifecycle';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
export class WordContextKey {
export class WordContextKey extends Disposable {
static readonly AtEnd = new RawContextKey<boolean>('atEndOfWord', false);
private readonly _ckAtEnd: IContextKey<boolean>;
private readonly _confListener: IDisposable;
private _enabled: boolean;
private _selectionListener?: IDisposable;
......@@ -21,13 +20,15 @@ export class WordContextKey {
private readonly _editor: ICodeEditor,
@IContextKeyService contextKeyService: IContextKeyService,
) {
super();
this._ckAtEnd = WordContextKey.AtEnd.bindTo(contextKeyService);
this._confListener = this._editor.onDidChangeConfiguration(e => e.contribInfo && this._update());
this._register(this._editor.onDidChangeConfiguration(e => e.contribInfo && this._update()));
this._update();
}
dispose(): void {
dispose(this._confListener, this._selectionListener);
super.dispose();
dispose(this._selectionListener);
this._ckAtEnd.reset();
}
......
......@@ -90,7 +90,8 @@ export class MainThreadMessageService implements MainThreadMessageServiceShape {
// if promise has not been resolved yet, now is the time to ensure a return value
// otherwise if already resolved it means the user clicked one of the buttons
Event.once(messageHandle.onDidClose)(() => {
dispose(...primaryActions, ...secondaryActions);
dispose(primaryActions);
dispose(secondaryActions);
resolve(undefined);
});
});
......
......@@ -175,7 +175,7 @@ export class SaveErrorHandler extends Disposable implements ISaveErrorHandler, I
// Show message and keep function to hide in case the file gets saved/reverted
const handle = this.notificationService.notify({ severity: Severity.Error, message, actions });
Event.once(handle.onDidClose)(() => dispose(...actions.primary!, ...actions.secondary!));
Event.once(handle.onDidClose)(() => { dispose(actions.primary!), dispose(actions.secondary!); });
this.messages.set(model.getResource(), handle);
}
......@@ -258,7 +258,7 @@ class ResolveSaveConflictAction extends Action {
actions.secondary!.push(this.instantiationService.createInstance(DoNotShowResolveConflictLearnMoreAction));
const handle = this.notificationService.notify({ severity: Severity.Info, message: conflictEditorHelp, actions });
Event.once(handle.onDidClose)(() => dispose(...actions.primary!, ...actions.secondary!));
Event.once(handle.onDidClose)(() => { dispose(actions.primary!); dispose(actions.secondary!); });
pendingResolveSaveConflictMessages.push(handle);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册