From 68bb13ea0fe82c65dea38e01ee4dcf7325c265b5 Mon Sep 17 00:00:00 2001 From: Daniel Trevino <23410540+danieltre23@users.noreply.github.com> Date: Mon, 23 Aug 2021 21:21:37 +0000 Subject: [PATCH] refactor(compiler-cli): move `getDiagnosticsForComponent` to compiler (#43134) Change the language service to call `getDiagnosticsForComponent` from the compiler instead of the `TemplateTypeChecker`. Refs #42966 PR Close #43134 --- packages/compiler-cli/src/ngtsc/core/src/compiler.ts | 9 +++++++++ packages/language-service/ivy/language_service.ts | 3 +-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/compiler-cli/src/ngtsc/core/src/compiler.ts b/packages/compiler-cli/src/ngtsc/core/src/compiler.ts index 5c5df522387..a7c9344b2b6 100644 --- a/packages/compiler-cli/src/ngtsc/core/src/compiler.ts +++ b/packages/compiler-cli/src/ngtsc/core/src/compiler.ts @@ -459,6 +459,15 @@ export class NgCompiler { return this.addMessageTextDetails(diagnostics); } + /** + * Get all `ts.Diagnostic`s currently available that pertain to the given component. + */ + getDiagnosticsForComponent(component: ts.ClassDeclaration): ts.Diagnostic[] { + const compilation = this.ensureAnalyzed(); + const ttc = compilation.templateTypeChecker; + return this.addMessageTextDetails(ttc.getDiagnosticsForComponent(component)); + } + /** * Add Angular.io error guide links to diagnostics for this compilation. */ diff --git a/packages/language-service/ivy/language_service.ts b/packages/language-service/ivy/language_service.ts index 3515dc8c6dc..e1fce16bb46 100644 --- a/packages/language-service/ivy/language_service.ts +++ b/packages/language-service/ivy/language_service.ts @@ -68,7 +68,6 @@ export class LanguageService { getSemanticDiagnostics(fileName: string): ts.Diagnostic[] { return this.withCompilerAndPerfTracing(PerfPhase.LsDiagnostics, (compiler) => { - const ttc = compiler.getTemplateTypeChecker(); const diagnostics: ts.Diagnostic[] = []; if (isTypeScriptFile(fileName)) { const program = compiler.getCurrentProgram(); @@ -104,7 +103,7 @@ export class LanguageService { const components = compiler.getComponentsWithTemplateFile(fileName); for (const component of components) { if (ts.isClassDeclaration(component)) { - diagnostics.push(...ttc.getDiagnosticsForComponent(component)); + diagnostics.push(...compiler.getDiagnosticsForComponent(component)); } } }