From eb1471355d16c36f119a44534d1e3a2292c34692 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