提交 1d136522 编写于 作者: J Joao Moreno

fix lifecycle

上级 dc387ded
......@@ -14,19 +14,17 @@ export interface IDisposable {
dispose(): void;
}
export function dispose<T extends IDisposable>(disposable: T): T;
export function dispose<T extends IDisposable>(...disposables: T[]): T;
export function dispose<T extends IDisposable>(disposables: T[]): T[];
export function dispose<T extends IDisposable>(...disposables: T[]): T[];
export function dispose<T extends IDisposable>(arg: any): T[] {
if (isArray(arg)) {
const disposables: T[] = arg;
disposables.forEach(d => d && d.dispose());
return [];
export function dispose<T extends IDisposable>(...disposables: T[]): T[] {
const first = disposables[0];
if (isArray(first)) {
disposables = first as any as T[];
}
const disposable: T = arg;
disposable.dispose();
return null;
disposables.forEach(d => d && d.dispose());
return [];
}
export function combinedDisposable(disposables: IDisposable[]): IDisposable;
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import * as assert from 'assert';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
class Disposable implements IDisposable {
isDisposed = false;
dispose() { this.isDisposed = true; }
}
suite('Lifecycle', () => {
test('dispose single disposable', () => {
const disposable = new Disposable();
assert(!disposable.isDisposed);
dispose(disposable);
assert(disposable.isDisposed);
});
test('dispose disposable array', () => {
const disposable = new Disposable();
const disposable2 = new Disposable();
assert(!disposable.isDisposed);
assert(!disposable2.isDisposed);
dispose([disposable, disposable2]);
assert(disposable.isDisposed);
assert(disposable2.isDisposed);
});
test('dispose disposables', () => {
const disposable = new Disposable();
const disposable2 = new Disposable();
assert(!disposable.isDisposed);
assert(!disposable2.isDisposed);
dispose(disposable, disposable2);
assert(disposable.isDisposed);
assert(disposable2.isDisposed);
});
});
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册