diff --git a/extensions/typescript/src/features/codeActionProvider.ts b/extensions/typescript/src/features/codeActionProvider.ts index ec927b9a1586b5bf6e1f9f4277d779f7ff7d5ab0..f23f61d3c456b6ddfa4626c57d3c65188a37c1af 100644 --- a/extensions/typescript/src/features/codeActionProvider.ts +++ b/extensions/typescript/src/features/codeActionProvider.ts @@ -5,7 +5,7 @@ 'use strict'; -import { CodeActionProvider, TextDocument, Range, CancellationToken, CodeActionContext, Command, commands, Uri, workspace, WorkspaceEdit, TextEdit, FormattingOptions, window } from 'vscode'; +import { CodeActionProvider, TextDocument, Range, CancellationToken, CodeActionContext, Command, commands, Uri, workspace, WorkspaceEdit, TextEdit, FormattingOptions, window, ProviderResult } from 'vscode'; import * as Proto from '../protocol'; import { ITypescriptServiceClient } from '../typescriptService'; @@ -43,10 +43,14 @@ export default class TypeScriptCodeActionProvider implements CodeActionProvider commands.registerCommand(this.commandId, this.onCodeAction, this); } - public provideCodeActions(document: TextDocument, range: Range, context: CodeActionContext, token: CancellationToken): Thenable { + public provideCodeActions(document: TextDocument, range: Range, context: CodeActionContext, token: CancellationToken): ProviderResult { + if (!this.client.apiVersion.has213Features()) { + return []; + } + const file = this.client.normalizePath(document.uri); if (!file) { - return Promise.resolve([]); + return []; } let formattingOptions: FormattingOptions | undefined = undefined; for (const editor of window.visibleTextEditors) { diff --git a/extensions/typescript/src/features/referencesCodeLensProvider.ts b/extensions/typescript/src/features/referencesCodeLensProvider.ts index f2a52f09e47efa88e8dd7011562a65d25bbfe861..694187a27473cc4f66f1193763f26cae93c020e5 100644 --- a/extensions/typescript/src/features/referencesCodeLensProvider.ts +++ b/extensions/typescript/src/features/referencesCodeLensProvider.ts @@ -22,6 +22,13 @@ export default class TypeScriptReferencesCodeLensProvider extends TypeScriptBase super(client, 'referencesCodeLens.enabled'); } + provideCodeLenses(document: TextDocument, token: CancellationToken): Promise { + if (!this.client.apiVersion.has206Features()) { + return Promise.resolve([]); + } + return super.provideCodeLenses(document, token); + } + resolveCodeLens(inputCodeLens: CodeLens, token: CancellationToken): Promise { const codeLens = inputCodeLens as ReferencesCodeLens; const args: Proto.FileLocationRequestArgs = { diff --git a/extensions/typescript/src/typescriptMain.ts b/extensions/typescript/src/typescriptMain.ts index f633472ab55a0c004913e0f19f498f9df5f89fac..c24ee6bc26c44229acb90725a23c9bf01b537755 100644 --- a/extensions/typescript/src/typescriptMain.ts +++ b/extensions/typescript/src/typescriptMain.ts @@ -224,19 +224,15 @@ class LanguageProvider { this.disposables.push(languages.registerSignatureHelpProvider(selector, new SignatureHelpProvider(client), '(', ',')); this.disposables.push(languages.registerRenameProvider(selector, new RenameProvider(client))); - if (client.apiVersion.has206Features()) { - this.referenceCodeLensProvider = new ReferenceCodeLensProvider(client); - this.referenceCodeLensProvider.updateConfiguration(); - this.disposables.push(languages.registerCodeLensProvider(selector, this.referenceCodeLensProvider)); + this.referenceCodeLensProvider = new ReferenceCodeLensProvider(client); + this.referenceCodeLensProvider.updateConfiguration(); + this.disposables.push(languages.registerCodeLensProvider(selector, this.referenceCodeLensProvider)); - this.implementationCodeLensProvider = new ImplementationCodeLensProvider(client); - this.implementationCodeLensProvider.updateConfiguration(); - this.disposables.push(languages.registerCodeLensProvider(selector, this.implementationCodeLensProvider)); - } + this.implementationCodeLensProvider = new ImplementationCodeLensProvider(client); + this.implementationCodeLensProvider.updateConfiguration(); + this.disposables.push(languages.registerCodeLensProvider(selector, this.implementationCodeLensProvider)); - if (client.apiVersion.has213Features()) { - this.disposables.push(languages.registerCodeActionsProvider(selector, new CodeActionProvider(client, this.description.id))); - } + this.disposables.push(languages.registerCodeActionsProvider(selector, new CodeActionProvider(client, this.description.id))); if (client.apiVersion.has220Features()) { this.disposables.push(languages.registerImplementationProvider(selector, new ImplementationProvider(client)));