eae5d8c807
These conflicts will be resolved in the following commits. We do it this way so that PR review is possible.
43 lines
1.0 KiB
TypeScript
43 lines
1.0 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import * as vscode from 'vscode';
|
|
|
|
export function disposeAll(disposables: vscode.Disposable[]) {
|
|
while (disposables.length) {
|
|
const item = disposables.pop();
|
|
if (item) {
|
|
item.dispose();
|
|
}
|
|
}
|
|
}
|
|
|
|
export abstract class Disposable {
|
|
private _isDisposed = false;
|
|
|
|
protected _disposables: vscode.Disposable[] = [];
|
|
|
|
public dispose(): any {
|
|
if (this._isDisposed) {
|
|
return;
|
|
}
|
|
this._isDisposed = true;
|
|
disposeAll(this._disposables);
|
|
}
|
|
|
|
protected _register<T extends vscode.Disposable>(value: T): T {
|
|
if (this._isDisposed) {
|
|
value.dispose();
|
|
} else {
|
|
this._disposables.push(value);
|
|
}
|
|
return value;
|
|
}
|
|
|
|
protected get isDisposed() {
|
|
return this._isDisposed;
|
|
}
|
|
}
|