From fe0d02fc4749e5e08a771f948ec768d30fb0d5eb Mon Sep 17 00:00:00 2001 From: Chuck Jazdzewski Date: Tue, 4 Apr 2017 11:37:06 -0700 Subject: [PATCH] fix(language-service): initialize static reflector correctly Fixes #15768 --- .../language-service/src/typescript_host.ts | 3 ++- .../language-service/test/diagnostics_spec.ts | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/language-service/src/typescript_host.ts b/packages/language-service/src/typescript_host.ts index 05a6d46d60..a547f91d81 100644 --- a/packages/language-service/src/typescript_host.ts +++ b/packages/language-service/src/typescript_host.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {AotSummaryResolver, CompileDirectiveMetadata, CompileMetadataResolver, CompilerConfig, DEFAULT_INTERPOLATION_CONFIG, DirectiveNormalizer, DirectiveResolver, DomElementSchemaRegistry, HtmlParser, InterpolationConfig, NgAnalyzedModules, NgModuleResolver, ParseTreeResult, Parser, PipeResolver, ResourceLoader, StaticReflector, StaticSymbol, StaticSymbolCache, StaticSymbolResolver, SummaryResolver, UrlResolver, analyzeNgModules, componentModuleUrl, createOfflineCompileUrlResolver, extractProgramSymbols} from '@angular/compiler'; +import {AotSummaryResolver, CompileDirectiveMetadata, CompileMetadataResolver, CompilerConfig, DEFAULT_INTERPOLATION_CONFIG, DirectiveNormalizer, DirectiveResolver, DomElementSchemaRegistry, HtmlParser, InterpolationConfig, NgAnalyzedModules, NgModuleResolver, ParseTreeResult, Parser, PipeResolver, ResourceLoader, StaticAndDynamicReflectionCapabilities, StaticReflector, StaticSymbol, StaticSymbolCache, StaticSymbolResolver, SummaryResolver, UrlResolver, analyzeNgModules, componentModuleUrl, createOfflineCompileUrlResolver, extractProgramSymbols} from '@angular/compiler'; import {Type, ViewEncapsulation, ɵConsole as Console} from '@angular/core'; import * as fs from 'fs'; import * as path from 'path'; @@ -428,6 +428,7 @@ export class TypeScriptServiceHost implements LanguageServiceHost { const ssr = this.staticSymbolResolver; result = this._reflector = new StaticReflector( this._summaryResolver, ssr, [], [], (e, filePath) => this.collectError(e, filePath)); + StaticAndDynamicReflectionCapabilities.install(result); } return result; } diff --git a/packages/language-service/test/diagnostics_spec.ts b/packages/language-service/test/diagnostics_spec.ts index 07729cebb3..8d486bc19d 100644 --- a/packages/language-service/test/diagnostics_spec.ts +++ b/packages/language-service/test/diagnostics_spec.ts @@ -201,7 +201,6 @@ describe('diagnostics', () => { expect(diagnostic).toEqual([]); }); - it('should report an error for invalid providers', () => { addCode( ` @@ -220,6 +219,23 @@ describe('diagnostics', () => { }); }); + // Issue #15768 + it('should be able to parse a template reference', () => { + addCode( + ` + @Component({ + selector: 'my-component', + template: \` +
+
+ Loading comps... + \` + }) + export class MyComponent {} + `, + fileName => onlyModuleDiagnostics(ngService.getDiagnostics(fileName))); + }); + function addCode(code: string, cb: (fileName: string, content?: string) => void) { const fileName = '/app/app.component.ts'; const originalContent = mockHost.getFileContent(fileName);