Skip to content

Commit 7845ce8

Browse files
committed
debt - less asWinJsPromise-usage, microsoft#56137
1 parent 1ca1b44 commit 7845ce8

4 files changed

Lines changed: 30 additions & 60 deletions

File tree

src/vs/editor/contrib/goToDefinition/goToDefinition.ts

Lines changed: 12 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,16 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { flatten, coalesce } from 'vs/base/common/arrays';
7-
import { asWinJsPromise, asThenable } from 'vs/base/common/async';
87
import { CancellationToken } from 'vs/base/common/cancellation';
98
import { onUnexpectedExternalError } from 'vs/base/common/errors';
10-
import { TPromise } from 'vs/base/common/winjs.base';
119
import { registerDefaultLanguageCommand } from 'vs/editor/browser/editorExtensions';
1210
import { Position } from 'vs/editor/common/core/position';
1311
import { ITextModel } from 'vs/editor/common/model';
1412
import { DefinitionLink, DefinitionProviderRegistry, ImplementationProviderRegistry, TypeDefinitionProviderRegistry } from 'vs/editor/common/modes';
1513
import LanguageFeatureRegistry from 'vs/editor/common/modes/languageFeatureRegistry';
1614

17-
function getDefinitions<T>(
18-
model: ITextModel,
19-
position: Position,
20-
registry: LanguageFeatureRegistry<T>,
21-
provide: (provider: T, model: ITextModel, position: Position, token: CancellationToken) => DefinitionLink | DefinitionLink[] | Thenable<DefinitionLink | DefinitionLink[]>
22-
): TPromise<DefinitionLink[]> {
23-
const provider = registry.ordered(model);
2415

25-
// get results
26-
const promises = provider.map((provider): TPromise<DefinitionLink | DefinitionLink[]> => {
27-
return asWinJsPromise((token) => {
28-
return provide(provider, model, position, token);
29-
}).then(undefined, err => {
30-
onUnexpectedExternalError(err);
31-
return null;
32-
});
33-
});
34-
return TPromise.join(promises)
35-
.then(flatten)
36-
.then(references => coalesce(references));
37-
}
38-
39-
function getDefinitions2<T>(
16+
function getDefinitions<T>(
4017
model: ITextModel,
4118
position: Position,
4219
registry: LanguageFeatureRegistry<T>,
@@ -46,43 +23,35 @@ function getDefinitions2<T>(
4623

4724
// get results
4825
const promises = provider.map((provider): Thenable<DefinitionLink | DefinitionLink[]> => {
49-
return asThenable(() => {
50-
return provide(provider, model, position);
51-
}).then(undefined, err => {
26+
return Promise.resolve(provide(provider, model, position)).then(undefined, err => {
5227
onUnexpectedExternalError(err);
5328
return null;
5429
});
5530
});
56-
return TPromise.join(promises)
31+
return Promise.all(promises)
5732
.then(flatten)
5833
.then(references => coalesce(references));
5934
}
6035

6136

62-
export function getDefinitionsAtPosition(model: ITextModel, position: Position): TPromise<DefinitionLink[]> {
63-
return getDefinitions(model, position, DefinitionProviderRegistry, (provider, model, position, token) => {
64-
return provider.provideDefinition(model, position, token);
65-
});
66-
}
67-
68-
export function getDefinitionsAtPosition2(model: ITextModel, position: Position, token: CancellationToken): Thenable<DefinitionLink[]> {
69-
return getDefinitions2(model, position, DefinitionProviderRegistry, (provider, model, position) => {
37+
export function getDefinitionsAtPosition(model: ITextModel, position: Position, token: CancellationToken): Thenable<DefinitionLink[]> {
38+
return getDefinitions(model, position, DefinitionProviderRegistry, (provider, model, position) => {
7039
return provider.provideDefinition(model, position, token);
7140
});
7241
}
7342

74-
export function getImplementationsAtPosition(model: ITextModel, position: Position): TPromise<DefinitionLink[]> {
75-
return getDefinitions(model, position, ImplementationProviderRegistry, (provider, model, position, token) => {
43+
export function getImplementationsAtPosition(model: ITextModel, position: Position, token: CancellationToken): Thenable<DefinitionLink[]> {
44+
return getDefinitions(model, position, ImplementationProviderRegistry, (provider, model, position) => {
7645
return provider.provideImplementation(model, position, token);
7746
});
7847
}
7948

80-
export function getTypeDefinitionsAtPosition(model: ITextModel, position: Position): TPromise<DefinitionLink[]> {
81-
return getDefinitions(model, position, TypeDefinitionProviderRegistry, (provider, model, position, token) => {
49+
export function getTypeDefinitionsAtPosition(model: ITextModel, position: Position, token: CancellationToken): Thenable<DefinitionLink[]> {
50+
return getDefinitions(model, position, TypeDefinitionProviderRegistry, (provider, model, position) => {
8251
return provider.provideTypeDefinition(model, position, token);
8352
});
8453
}
8554

86-
registerDefaultLanguageCommand('_executeDefinitionProvider', getDefinitionsAtPosition);
87-
registerDefaultLanguageCommand('_executeImplementationProvider', getImplementationsAtPosition);
88-
registerDefaultLanguageCommand('_executeTypeDefinitionProvider', getTypeDefinitionsAtPosition);
55+
registerDefaultLanguageCommand('_executeDefinitionProvider', (model, position) => getDefinitionsAtPosition(model, position, CancellationToken.None));
56+
registerDefaultLanguageCommand('_executeImplementationProvider', (model, position) => getImplementationsAtPosition(model, position, CancellationToken.None));
57+
registerDefaultLanguageCommand('_executeTypeDefinitionProvider', (model, position) => getTypeDefinitionsAtPosition(model, position, CancellationToken.None));

src/vs/editor/contrib/goToDefinition/goToDefinitionCommands.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import { INotificationService } from 'vs/platform/notification/common/notificati
2727
import { createCancelablePromise } from 'vs/base/common/async';
2828
import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
2929
import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions';
30+
import { CancellationToken } from 'vs/base/common/cancellation';
3031

3132
export class DefinitionActionConfig {
3233

@@ -57,7 +58,7 @@ export class DefinitionAction extends EditorAction {
5758
const model = editor.getModel();
5859
const pos = editor.getPosition();
5960

60-
const definitionPromise = this._getDeclarationsAtPosition(model, pos).then(references => {
61+
const definitionPromise = this._getDeclarationsAtPosition(model, pos, CancellationToken.None).then(references => {
6162

6263
if (model.isDisposed() || editor.getModel() !== model) {
6364
// new model, no more model
@@ -109,11 +110,11 @@ export class DefinitionAction extends EditorAction {
109110
});
110111

111112
progressService.showWhile(definitionPromise, 250);
112-
return definitionPromise;
113+
return TPromise.wrap(definitionPromise);
113114
}
114115

115-
protected _getDeclarationsAtPosition(model: ITextModel, position: corePosition.Position): TPromise<DefinitionLink[]> {
116-
return getDefinitionsAtPosition(model, position);
116+
protected _getDeclarationsAtPosition(model: ITextModel, position: corePosition.Position, token: CancellationToken): Thenable<DefinitionLink[]> {
117+
return getDefinitionsAtPosition(model, position, token);
117118
}
118119

119120
protected _getNoResultFoundMessage(info?: IWordAtPosition): string {
@@ -250,8 +251,8 @@ export class PeekDefinitionAction extends DefinitionAction {
250251
}
251252

252253
export class ImplementationAction extends DefinitionAction {
253-
protected _getDeclarationsAtPosition(model: ITextModel, position: corePosition.Position): TPromise<DefinitionLink[]> {
254-
return getImplementationsAtPosition(model, position);
254+
protected _getDeclarationsAtPosition(model: ITextModel, position: corePosition.Position, token: CancellationToken): Thenable<DefinitionLink[]> {
255+
return getImplementationsAtPosition(model, position, token);
255256
}
256257

257258
protected _getNoResultFoundMessage(info?: IWordAtPosition): string {
@@ -308,8 +309,8 @@ export class PeekImplementationAction extends ImplementationAction {
308309
}
309310

310311
export class TypeDefinitionAction extends DefinitionAction {
311-
protected _getDeclarationsAtPosition(model: ITextModel, position: corePosition.Position): TPromise<DefinitionLink[]> {
312-
return getTypeDefinitionsAtPosition(model, position);
312+
protected _getDeclarationsAtPosition(model: ITextModel, position: corePosition.Position, token: CancellationToken): Thenable<DefinitionLink[]> {
313+
return getTypeDefinitionsAtPosition(model, position, token);
313314
}
314315

315316
protected _getNoResultFoundMessage(info?: IWordAtPosition): string {
@@ -403,4 +404,4 @@ MenuRegistry.appendMenuItem(MenuId.MenubarGoMenu, {
403404
title: nls.localize({ key: 'miGotoImplementation', comment: ['&& denotes a mnemonic'] }, "Go to &&Implementation")
404405
},
405406
order: 6
406-
});
407+
});

src/vs/editor/contrib/goToDefinition/goToDefinitionMouse.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import * as editorCommon from 'vs/editor/common/editorCommon';
1818
import { DefinitionProviderRegistry, DefinitionLink } from 'vs/editor/common/modes';
1919
import { ICodeEditor, IMouseTarget, MouseTargetType } from 'vs/editor/browser/editorBrowser';
2020
import { registerEditorContribution } from 'vs/editor/browser/editorExtensions';
21-
import { getDefinitionsAtPosition2 } from './goToDefinition';
21+
import { getDefinitionsAtPosition } from './goToDefinition';
2222
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
2323
import { ITextModelService } from 'vs/editor/common/services/resolverService';
2424
import { registerThemingParticipant } from 'vs/platform/theme/common/themeService';
@@ -284,7 +284,7 @@ class GotoDefinitionWithMouseEditorContribution implements editorCommon.IEditorC
284284
return TPromise.as(null);
285285
}
286286

287-
return getDefinitionsAtPosition2(model, target.position, token);
287+
return getDefinitionsAtPosition(model, target.position, token);
288288
}
289289

290290
private gotoDefinition(target: IMouseTarget, sideBySide: boolean): TPromise<any> {

src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ suite('ExtHostLanguageFeatures', function () {
276276

277277
return rpcProtocol.sync().then(() => {
278278

279-
return getDefinitionsAtPosition(model, new EditorPosition(1, 1)).then(value => {
279+
return getDefinitionsAtPosition(model, new EditorPosition(1, 1), CancellationToken.None).then(value => {
280280
assert.equal(value.length, 1);
281281
let [entry] = value;
282282
assert.deepEqual(entry.range, { startLineNumber: 2, startColumn: 3, endLineNumber: 4, endColumn: 5 });
@@ -300,7 +300,7 @@ suite('ExtHostLanguageFeatures', function () {
300300

301301
return rpcProtocol.sync().then(() => {
302302

303-
return getDefinitionsAtPosition(model, new EditorPosition(1, 1)).then(value => {
303+
return getDefinitionsAtPosition(model, new EditorPosition(1, 1), CancellationToken.None).then(value => {
304304
assert.equal(value.length, 2);
305305
});
306306
});
@@ -322,7 +322,7 @@ suite('ExtHostLanguageFeatures', function () {
322322

323323
return rpcProtocol.sync().then(() => {
324324

325-
return getDefinitionsAtPosition(model, new EditorPosition(1, 1)).then(value => {
325+
return getDefinitionsAtPosition(model, new EditorPosition(1, 1), CancellationToken.None).then(value => {
326326
assert.equal(value.length, 2);
327327
// let [first, second] = value;
328328

@@ -347,7 +347,7 @@ suite('ExtHostLanguageFeatures', function () {
347347

348348
return rpcProtocol.sync().then(() => {
349349

350-
return getDefinitionsAtPosition(model, new EditorPosition(1, 1)).then(value => {
350+
return getDefinitionsAtPosition(model, new EditorPosition(1, 1), CancellationToken.None).then(value => {
351351
assert.equal(value.length, 1);
352352
});
353353
});
@@ -364,7 +364,7 @@ suite('ExtHostLanguageFeatures', function () {
364364
}));
365365

366366
return rpcProtocol.sync().then(() => {
367-
return getImplementationsAtPosition(model, new EditorPosition(1, 1)).then(value => {
367+
return getImplementationsAtPosition(model, new EditorPosition(1, 1), CancellationToken.None).then(value => {
368368
assert.equal(value.length, 1);
369369
let [entry] = value;
370370
assert.deepEqual(entry.range, { startLineNumber: 2, startColumn: 3, endLineNumber: 4, endColumn: 5 });
@@ -384,7 +384,7 @@ suite('ExtHostLanguageFeatures', function () {
384384
}));
385385

386386
return rpcProtocol.sync().then(() => {
387-
return getTypeDefinitionsAtPosition(model, new EditorPosition(1, 1)).then(value => {
387+
return getTypeDefinitionsAtPosition(model, new EditorPosition(1, 1), CancellationToken.None).then(value => {
388388
assert.equal(value.length, 1);
389389
let [entry] = value;
390390
assert.deepEqual(entry.range, { startLineNumber: 2, startColumn: 3, endLineNumber: 4, endColumn: 5 });

0 commit comments

Comments
 (0)