diff --git a/src/vs/base/common/lifecycle.ts b/src/vs/base/common/lifecycle.ts index c4fec6d89ca0bdff37efcbcfc6f554340764caff..406a9c801d4a2a5cc9d1107ca8355d83d22114c8 100644 --- a/src/vs/base/common/lifecycle.ts +++ b/src/vs/base/common/lifecycle.ts @@ -66,7 +66,7 @@ export function dispose(arg: T | IterableIterator | un d.dispose(); } } - return arg; + return Array.isArray(arg) ? [] : arg; } else if (arg) { markTracked(arg); arg.dispose(); diff --git a/src/vs/base/test/common/lifecycle.test.ts b/src/vs/base/test/common/lifecycle.test.ts index 4d15ad2046c4c8aebf4dbfdc53972f555cc33b56..91f17aedb44cf76ec9e87f2a92b1fd48f5b852ed 100644 --- a/src/vs/base/test/common/lifecycle.test.ts +++ b/src/vs/base/test/common/lifecycle.test.ts @@ -48,6 +48,21 @@ suite('Lifecycle', () => { assert(disposable.isDisposed); assert(disposable2.isDisposed); }); + + test('Action bar has broken accessibility #100273', function () { + let array = [{ dispose() { } }, { dispose() { } }]; + let array2 = dispose(array); + + assert.equal(array.length, 2); + assert.equal(array2.length, 0); + assert.ok(array !== array2); + + let set = new Set([{ dispose() { } }, { dispose() { } }]); + let setValues = set.values(); + let setValues2 = dispose(setValues); + assert.ok(setValues === setValues2); + + }); }); suite('Reference Collection', () => {