From f063a75eae548bb80cce8a36645cc9c72df37132 Mon Sep 17 00:00:00 2001 From: Dylan Hunn Date: Thu, 5 Sep 2024 10:16:15 -0700 Subject: [PATCH] refactor(language-service): Allow language service diagnostics to be ignored (#57675) Add a check to the language service that ignores specified diagnostic codes. This will be useful in g3. The codes to ignore are exposed as part of the PluginConfig. Fixes github.com/angular/vscode-ng-language-service/issues/1243 PR Close #57675 --- packages/language-service/api.ts | 5 +++++ packages/language-service/src/language_service.ts | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/language-service/api.ts b/packages/language-service/api.ts index 7496f4f212f..af243594916 100644 --- a/packages/language-service/api.ts +++ b/packages/language-service/api.ts @@ -41,6 +41,11 @@ export interface PluginConfig { * If false, disables parsing of `@let` declarations in the compiler. */ enableLetSyntax?: false; + + /** + * A list of diagnostic codes that should be supressed in the language service. + */ + suppressAngularDiagnosticCodes?: number[]; } export type GetTcbResponse = { diff --git a/packages/language-service/src/language_service.ts b/packages/language-service/src/language_service.ts index 647d2de240d..92e6dd2eba5 100644 --- a/packages/language-service/src/language_service.ts +++ b/packages/language-service/src/language_service.ts @@ -88,7 +88,12 @@ export class LanguageService { const program = compiler.getCurrentProgram(); const sourceFile = program.getSourceFile(fileName); if (sourceFile) { - const ngDiagnostics = compiler.getDiagnosticsForFile(sourceFile, OptimizeFor.SingleFile); + let ngDiagnostics = compiler.getDiagnosticsForFile(sourceFile, OptimizeFor.SingleFile); + if (this.config.suppressAngularDiagnosticCodes) { + ngDiagnostics = ngDiagnostics.filter( + (diag) => !this.config.suppressAngularDiagnosticCodes!.includes(diag.code), + ); + } // There are several kinds of diagnostics returned by `NgCompiler` for a source file: // // 1. Angular-related non-template diagnostics from decorated classes within that