diff --git a/extensions/typescript-language-features/src/tsServer/spawner.ts b/extensions/typescript-language-features/src/tsServer/spawner.ts index a3187efc35efcce6863592c1346cf6874dd0078c..092ad4f0fb6e729e180071dd3fa03e51e4e6c9d3 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 2a72b19004cd190d88426e5ceff9d23f78ef61ed..f797e578121378ba049ad55dfea0d9f703b66f8a 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 {