Use Typescript's CompletionInfo.isNewIdentifierLocation

Fixes #52499
This commit is contained in:
Matt Bierner
2018-07-11 14:30:21 -07:00
parent e1d50f119d
commit a7fb144e95
2 changed files with 17 additions and 5 deletions

View File

@@ -306,12 +306,23 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
triggerCharacter: context.triggerCharacter as Proto.CompletionsTriggerCharacter
};
let msg: Proto.CompletionEntry[] | undefined = undefined;
let msg: ReadonlyArray<Proto.CompletionEntry> | undefined = undefined;
try {
const response = await this.client.execute('completions', args, token);
msg = response.body;
if (!msg) {
return [];
if (this.client.apiVersion.gte(API.v300)) {
const response = await this.client.execute('completionInfo', args, token);
if (!response.body) {
return [];
}
if (response.body.isNewIdentifierLocation) {
return [];
}
msg = response.body.entries;
} else {
const response = await this.client.execute('completions', args, token);
if (!response.body) {
return [];
}
msg = response.body;
}
} catch {
return [];

View File

@@ -51,6 +51,7 @@ export interface ITypeScriptServiceClient {
execute(command: 'change', args: Proto.ChangeRequestArgs, expectedResult: boolean, token?: CancellationToken): Promise<any>;
execute(command: 'quickinfo', args: Proto.FileLocationRequestArgs, token?: CancellationToken): Promise<Proto.QuickInfoResponse>;
execute(command: 'completions', args: Proto.CompletionsRequestArgs, token?: CancellationToken): Promise<Proto.CompletionsResponse>;
execute(command: 'completionInfo', args: Proto.CompletionsRequestArgs, token?: CancellationToken): Promise<Proto.CompletionInfoResponse>;
execute(command: 'completionEntryDetails', args: Proto.CompletionDetailsRequestArgs, token?: CancellationToken): Promise<Proto.CompletionDetailsResponse>;
execute(command: 'signatureHelp', args: Proto.SignatureHelpRequestArgs, token?: CancellationToken): Promise<Proto.SignatureHelpResponse>;
execute(command: 'definition', args: Proto.FileLocationRequestArgs, token?: CancellationToken): Promise<Proto.DefinitionResponse>;