From 637b409b006dfa69b6a89e65eca033e65f65be40 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 28 Jul 2021 22:12:44 -0700 Subject: [PATCH] Bundle TS 4.4 --- extensions/package.json | 2 +- .../src/extension.browser.ts | 2 +- .../src/languageFeatures/completions.ts | 1 - .../fileConfigurationManager.ts | 1 - .../src/languageFeatures/inlayHints.ts | 91 ++++--------------- .../src/typescriptService.ts | 1 + .../src/utils/typeConverters.ts | 1 - extensions/yarn.lock | 8 +- 8 files changed, 24 insertions(+), 83 deletions(-) diff --git a/extensions/package.json b/extensions/package.json index 6df753ba471..9b63fad61d0 100644 --- a/extensions/package.json +++ b/extensions/package.json @@ -4,7 +4,7 @@ "license": "MIT", "description": "Dependencies shared by all extensions", "dependencies": { - "typescript": "4.3.5" + "typescript": "^4.4.0-dev.20210728" }, "scripts": { "postinstall": "node ./postinstall" diff --git a/extensions/typescript-language-features/src/extension.browser.ts b/extensions/typescript-language-features/src/extension.browser.ts index f3e1049a746..0293589a463 100644 --- a/extensions/typescript-language-features/src/extension.browser.ts +++ b/extensions/typescript-language-features/src/extension.browser.ts @@ -58,7 +58,7 @@ export function activate( new TypeScriptVersion( TypeScriptVersionSource.Bundled, vscode.Uri.joinPath(context.extensionUri, 'dist/browser/typescript/tsserver.web.js').toString(), - API.fromSimpleString('4.3.5'))); + API.fromSimpleString('4.4.1'))); const lazyClientHost = createLazyClientHost(context, false, { pluginManager, diff --git a/extensions/typescript-language-features/src/languageFeatures/completions.ts b/extensions/typescript-language-features/src/languageFeatures/completions.ts index fbf7165add3..bc884a68498 100644 --- a/extensions/typescript-language-features/src/languageFeatures/completions.ts +++ b/extensions/typescript-language-features/src/languageFeatures/completions.ts @@ -685,7 +685,6 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider< includeExternalModuleExports: completionConfiguration.autoImportSuggestions, includeInsertTextCompletions: true, triggerCharacter: this.getTsTriggerCharacter(context), - // @ts-expect-error triggerKind: typeConverters.CompletionTriggerKind.toProtocolCompletionTriggerKind(context.triggerKind), }; diff --git a/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts b/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts index e3381679a30..e30a90ec46e 100644 --- a/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts +++ b/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts @@ -199,7 +199,6 @@ export default class FileConfigurationManager extends Disposable { generateReturnInDocTemplate: config.get('suggest.jsdoc.generateReturns', true), includeCompletionsForImportStatements: config.get('suggest.includeCompletionsForImportStatements', true), includeCompletionsWithSnippetText: config.get('suggest.includeCompletionsWithSnippetText', true), - // @ts-expect-error until 4.4 allowIncompleteCompletions: true, displayPartsForJSDoc: true, ...getInlayHintsPreferences(config), diff --git a/extensions/typescript-language-features/src/languageFeatures/inlayHints.ts b/extensions/typescript-language-features/src/languageFeatures/inlayHints.ts index 7ccc4b2e007..7682201211e 100644 --- a/extensions/typescript-language-features/src/languageFeatures/inlayHints.ts +++ b/extensions/typescript-language-features/src/languageFeatures/inlayHints.ts @@ -4,82 +4,15 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import * as Proto from '../protocol'; -import { DocumentSelector } from '../utils/documentSelector'; -import { ClientCapability, ITypeScriptServiceClient, ServerResponse, ExecConfig } from '../typescriptService'; +import type * as Proto from '../protocol'; +import { ClientCapability, ITypeScriptServiceClient } from '../typescriptService'; +import API from '../utils/api'; import { Condition, conditionalRegistration, requireMinVersion, requireSomeCapability } from '../utils/dependentRegistration'; +import { Disposable } from '../utils/dispose'; +import { DocumentSelector } from '../utils/documentSelector'; import { Position } from '../utils/typeConverters'; import FileConfigurationManager, { getInlayHintsPreferences, InlayHintSettingNames } from './fileConfigurationManager'; -import API from '../utils/api'; -import { Disposable } from '../utils/dispose'; -namespace ExperimentalProto { - export const enum CommandTypes { - ProvideInlineHints = 'ProvideInlayHints' - } - - export interface InlayHintsArgs extends Proto.FileRequestArgs { - /** - * Start position of the span. - */ - start: number; - /** - * Length of the span. - */ - length: number; - } - - export interface InlineHintsRequest extends Proto.Request { - command: CommandTypes.ProvideInlineHints; - arguments: InlayHintsArgs; - } - - export enum InlayHintKind { - Type = 'Type', - Parameter = 'Parameter', - Enum = 'Enum' - } - - interface InlayHintItem { - text: string; - position: Proto.Location; - kind?: InlayHintKind; - whitespaceBefore?: boolean; - whitespaceAfter?: boolean; - } - - export interface InlayHintsResponse extends Proto.Response { - body?: InlayHintItem[]; - } - - export interface IExtendedTypeScriptServiceClient { - execute( - command: K, - args: ExtendedTsServerRequests[K][0], - token: vscode.CancellationToken, - config?: ExecConfig - ): Promise>; - } - - export interface ExtendedTsServerRequests { - 'provideInlayHints': [InlayHintsArgs, InlayHintsResponse]; - } - - export namespace InlayHintKind { - export function fromProtocolInlayHintKind(kind: InlayHintKind): vscode.InlayHintKind { - switch (kind) { - case InlayHintKind.Parameter: - return vscode.InlayHintKind.Parameter; - case InlayHintKind.Type: - return vscode.InlayHintKind.Type; - case InlayHintKind.Enum: - return vscode.InlayHintKind.Other; - default: - return vscode.InlayHintKind.Other; - } - } - } -} const inlayHintSettingNames = [ InlayHintSettingNames.parameterNamesSuppressWhenArgumentMatchesName, @@ -122,7 +55,7 @@ class TypeScriptInlayHintsProvider extends Disposable implements vscode.InlayHin await this.fileConfigurationManager.ensureConfigurationForDocument(model, token); - const response = await (this.client as ExperimentalProto.IExtendedTypeScriptServiceClient).execute('provideInlayHints', { file: filepath, start, length }, token); + const response = await this.client.execute('provideInlayHints', { file: filepath, start, length }, token); if (response.type !== 'response' || !response.success || !response.body) { return []; } @@ -131,7 +64,7 @@ class TypeScriptInlayHintsProvider extends Disposable implements vscode.InlayHin const result = new vscode.InlayHint( hint.text, Position.fromLocation(hint.position), - hint.kind && ExperimentalProto.InlayHintKind.fromProtocolInlayHintKind(hint.kind) + hint.kind && fromProtocolInlayHintKind(hint.kind) ); result.whitespaceBefore = hint.whitespaceBefore; result.whitespaceAfter = hint.whitespaceAfter; @@ -140,6 +73,16 @@ class TypeScriptInlayHintsProvider extends Disposable implements vscode.InlayHin } } + +function fromProtocolInlayHintKind(kind: Proto.InlayHintKind): vscode.InlayHintKind { + switch (kind) { + case 'Parameter': return vscode.InlayHintKind.Parameter; + case 'Type': return vscode.InlayHintKind.Type; + case 'Enum': return vscode.InlayHintKind.Other; + default: return vscode.InlayHintKind.Other; + } +} + export function requireInlayHintsConfiguration( language: string ) { diff --git a/extensions/typescript-language-features/src/typescriptService.ts b/extensions/typescript-language-features/src/typescriptService.ts index 116cbc4de56..1bbeb598d3f 100644 --- a/extensions/typescript-language-features/src/typescriptService.ts +++ b/extensions/typescript-language-features/src/typescriptService.ts @@ -69,6 +69,7 @@ interface StandardTsServerRequests { 'provideCallHierarchyIncomingCalls': [Proto.FileLocationRequestArgs, Proto.ProvideCallHierarchyIncomingCallsResponse]; 'provideCallHierarchyOutgoingCalls': [Proto.FileLocationRequestArgs, Proto.ProvideCallHierarchyOutgoingCallsResponse]; 'fileReferences': [Proto.FileRequestArgs, Proto.FileReferencesResponse]; + 'provideInlayHints': [Proto.InlayHintsRequestArgs, Proto.InlayHintsResponse]; } interface NoResponseTsServerRequests { diff --git a/extensions/typescript-language-features/src/utils/typeConverters.ts b/extensions/typescript-language-features/src/utils/typeConverters.ts index b324bc93638..6bc62700d60 100644 --- a/extensions/typescript-language-features/src/utils/typeConverters.ts +++ b/extensions/typescript-language-features/src/utils/typeConverters.ts @@ -128,7 +128,6 @@ export namespace SymbolKind { } export namespace CompletionTriggerKind { - // @ts-expect-error until 4.4 // TODO: once 4.4 protocol is available, replace number literals in return statements. export function toProtocolCompletionTriggerKind(kind: vscode.CompletionTriggerKind): Proto.CompletionTriggerKind { switch (kind) { diff --git a/extensions/yarn.lock b/extensions/yarn.lock index fd55c3dd698..f2e20b5abf4 100644 --- a/extensions/yarn.lock +++ b/extensions/yarn.lock @@ -24,10 +24,10 @@ fast-plist@0.1.2: resolved "https://registry.yarnpkg.com/fast-plist/-/fast-plist-0.1.2.tgz#a45aff345196006d406ca6cdcd05f69051ef35b8" integrity sha1-pFr/NFGWAG1AbKbNzQX2kFHvNbg= -typescript@4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" - integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== +typescript@^4.4.0-dev.20210728: + version "4.4.0-dev.20210728" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.0-dev.20210728.tgz#93595435d2f64d9da44e1d0fc0e8184132006023" + integrity sha512-ZAbNY9MCH4O4gtolh/3+nsYgDxItqCGBIqERwaKLzjMDJDyvyiZZzcUHsU6DMo/44dAetm4LXZ26bf8hbryUew== vscode-grammar-updater@^1.0.3: version "1.0.3"