diff --git a/extensions/vscode-api-tests/src/window.test.ts b/extensions/vscode-api-tests/src/window.test.ts index 2ac8d8add8e404a983ed26b795b269972fd58afc..60b704610ddb024120d75cce8046ea5c8a77f474 100644 --- a/extensions/vscode-api-tests/src/window.test.ts +++ b/extensions/vscode-api-tests/src/window.test.ts @@ -232,6 +232,20 @@ suite('window namespace tests', () => { return result; }); + test('showQuickPick, native promise - #11754', function () { + + const data = new Promise(resolve => { + resolve(['a', 'b', 'c']); + }); + + const source = new CancellationTokenSource(); + const result = window.showQuickPick(data, undefined, source.token); + source.cancel(); + return result.then(value => { + assert.equal(value, undefined); + }); + }); + test('editor, selection change kind', () => { return workspace.openTextDocument(join(workspace.rootPath, './far.js')).then(doc => window.showTextDocument(doc)).then(editor => { diff --git a/src/vs/base/common/winjs.base.d.ts b/src/vs/base/common/winjs.base.d.ts index d508754582039686ade704d4bcb9978e3d59389e..792ba9005348d7ef4cc79d65edef5e638fd88367 100644 --- a/src/vs/base/common/winjs.base.d.ts +++ b/src/vs/base/common/winjs.base.d.ts @@ -85,6 +85,10 @@ export declare class TPromise { public static join(promises:Thenable[]):Thenable; public static join(promises: {[n:string]:TPromise}):TPromise<{[n:string]:ValueType}>; public static any(promises:TPromise[]):TPromise<{ key:string; value:TPromise;}>; + + public static wrap(value: Thenable): TPromise; + public static wrap(value: ValueType): TPromise; + public static wrapError(error:any):TPromise; } diff --git a/src/vs/workbench/api/node/extHostQuickOpen.ts b/src/vs/workbench/api/node/extHostQuickOpen.ts index 1efba761690214452485bba61fbdad6b56f1a5f1..0fb1ccdd92ae2cb6a1cf0e947119cab86309fbd6 100644 --- a/src/vs/workbench/api/node/extHostQuickOpen.ts +++ b/src/vs/workbench/api/node/extHostQuickOpen.ts @@ -29,7 +29,7 @@ export class ExtHostQuickOpen extends ExtHostQuickOpenShape { // clear state from last invocation this._onDidSelectItem = undefined; - const itemsPromise = > TPromise.as(itemsOrItemsPromise); + const itemsPromise = >TPromise.wrap(itemsOrItemsPromise); const quickPickWidget = this._proxy.$show({ autoFocus: { autoFocusFirstEntry: true },