From 54a38a2ee92a559a50a82102da1206ed30fdb93b Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 5 Aug 2020 15:26:59 -0700 Subject: [PATCH] Add check to ensure RC and forward use '--serverMode'. (#104123) --- .../typescript-language-features/src/tsServer/spawner.ts | 9 ++++++++- extensions/typescript-language-features/src/utils/api.ts | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/extensions/typescript-language-features/src/tsServer/spawner.ts b/extensions/typescript-language-features/src/tsServer/spawner.ts index a3187efc35e..092ad4f0fb6 100644 --- a/extensions/typescript-language-features/src/tsServer/spawner.ts +++ b/extensions/typescript-language-features/src/tsServer/spawner.ts @@ -18,6 +18,7 @@ import { ILogDirectoryProvider } from './logDirectoryProvider'; import { GetErrRoutingTsServer, ITypeScriptServer, ProcessBasedTsServer, SyntaxRoutingTsServer, TsServerDelegate, TsServerProcessFactory, TsServerProcessKind } from './server'; import { TypeScriptVersionManager } from './versionManager'; import { ITypeScriptVersionProvider, TypeScriptVersion } from './versionProvider'; +import * as semver from 'semver'; const enum CompositeServerType { /** Run a single server that handles all commands */ @@ -163,7 +164,13 @@ export class TypeScriptServerSpawner { let tsServerLogFile: string | undefined; if (kind === TsServerProcessKind.Syntax) { - args.push('--syntaxOnly'); + if (semver.gte(API.v400rc.fullVersionString, apiVersion.fullVersionString)) { + args.push('--serverMode'); + args.push('partialSemantic'); + } + else { + args.push('--syntaxOnly'); + } } if (apiVersion.gte(API.v250)) { diff --git a/extensions/typescript-language-features/src/utils/api.ts b/extensions/typescript-language-features/src/utils/api.ts index 2a72b19004c..f797e578121 100644 --- a/extensions/typescript-language-features/src/utils/api.ts +++ b/extensions/typescript-language-features/src/utils/api.ts @@ -34,6 +34,7 @@ export default class API { public static readonly v380 = API.fromSimpleString('3.8.0'); public static readonly v381 = API.fromSimpleString('3.8.1'); public static readonly v390 = API.fromSimpleString('3.9.0'); + public static readonly v400rc = API.fromSimpleString('4.0.0-rc'); public static readonly v400 = API.fromSimpleString('4.0.0'); public static fromVersionString(versionString: string): API {