diff --git a/packages/language-service/src/typescript_host.ts b/packages/language-service/src/typescript_host.ts index 79b06efa31..8a076f6f69 100644 --- a/packages/language-service/src/typescript_host.ts +++ b/packages/language-service/src/typescript_host.ts @@ -140,7 +140,7 @@ export class TypeScriptServiceHost implements LanguageServiceHost { } getAnalyzedModules(): NgAnalyzedModules { - this.validate(); + this.updateAnalyzedModules(); return this.ensureAnalyzedModules(); } @@ -240,7 +240,7 @@ export class TypeScriptServiceHost implements LanguageServiceHost { private validate() { const program = this.program; - if (this._staticSymbolResolver && this.lastProgram != program) { + if (this.lastProgram !== program) { // Invalidate file that have changed in the static symbol resolver const invalidateFile = (fileName: string) => this._staticSymbolResolver.invalidateFile(fileName); @@ -253,14 +253,18 @@ export class TypeScriptServiceHost implements LanguageServiceHost { const lastVersion = this.fileVersions.get(fileName); if (version != lastVersion) { this.fileVersions.set(fileName, version); - invalidateFile(fileName); + if (this._staticSymbolResolver) { + invalidateFile(fileName); + } } } // Remove file versions that are no longer in the file and invalidate them. const missing = Array.from(this.fileVersions.keys()).filter(f => !seen.has(f)); missing.forEach(f => this.fileVersions.delete(f)); - missing.forEach(invalidateFile); + if (this._staticSymbolResolver) { + missing.forEach(invalidateFile); + } this.lastProgram = program; } @@ -634,4 +638,4 @@ function convertChain(chain: FormattedMessageChain): DiagnosticMessageChain { function errorToDiagnosticWithChain(error: FormattedError, span: Span): DeclarationError { return {message: error.chain ? convertChain(error.chain) : error.message, span}; -} \ No newline at end of file +} diff --git a/packages/language-service/test/diagnostics_spec.ts b/packages/language-service/test/diagnostics_spec.ts index 07a77c2872..00c1dd1fa0 100644 --- a/packages/language-service/test/diagnostics_spec.ts +++ b/packages/language-service/test/diagnostics_spec.ts @@ -248,7 +248,7 @@ describe('diagnostics', () => { template: \`