From b121725d5b8f867fab6d6b623f6c410764ba9c2d Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Tue, 16 Feb 2021 12:12:26 -0800 Subject: [PATCH] fix: ensure project language service is the Angular LS Add check to ensure the returned language service for the project is the Angular Language Service. This removes the need for a type assertion and also prevents the native TS LS from taking the place of ours if there is an issue with the plugin registration (which would result in duplicate results in TS files). Fixes #1110. --- server/src/session.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/server/src/session.ts b/server/src/session.ts index 17b81de63c..cbeeb9bcf3 100644 --- a/server/src/session.ts +++ b/server/src/session.ts @@ -708,8 +708,12 @@ export class Session { this.logger.info(`Failed to get language service for closed project ${project.projectName}.`); return undefined; } + const languageService = project.getLanguageService(); + if (!isNgLs(languageService)) { + return undefined; + } return { - languageService: project.getLanguageService() as NgLanguageService, + languageService, scriptInfo, }; } @@ -937,3 +941,7 @@ function toArray(it: ts.Iterator): T[] { } return results; } + +function isNgLs(ls: ts.LanguageService|NgLanguageService): ls is NgLanguageService { + return 'getTcb' in ls; +} \ No newline at end of file