From bde9771991701f593e8d9c3b8e449f3b8ede0be6 Mon Sep 17 00:00:00 2001 From: Chuck Jazdzewski Date: Tue, 4 Apr 2017 10:31:01 -0700 Subject: [PATCH] fix(language-service): parse extended i18n forms --- .../language-service/src/language_service.ts | 2 +- .../language-service/test/diagnostics_spec.ts | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/packages/language-service/src/language_service.ts b/packages/language-service/src/language_service.ts index d411861236..1219f2a818 100644 --- a/packages/language-service/src/language_service.ts +++ b/packages/language-service/src/language_service.ts @@ -110,7 +110,7 @@ class LanguageServiceImpl implements LanguageService { const config = new CompilerConfig(); const parser = new TemplateParser( config, expressionParser, new DomElementSchemaRegistry(), htmlParser, null, []); - const htmlResult = htmlParser.parse(template.source, ''); + const htmlResult = htmlParser.parse(template.source, '', true); const analyzedModules = this.host.getAnalyzedModules(); let errors: Diagnostic[] = undefined; let ngModule = analyzedModules.ngModuleByPipeOrDirective.get(template.type); diff --git a/packages/language-service/test/diagnostics_spec.ts b/packages/language-service/test/diagnostics_spec.ts index 8d486bc19d..db4d359d83 100644 --- a/packages/language-service/test/diagnostics_spec.ts +++ b/packages/language-service/test/diagnostics_spec.ts @@ -236,6 +236,28 @@ describe('diagnostics', () => { fileName => onlyModuleDiagnostics(ngService.getDiagnostics(fileName))); }); + // Issue #15625 + it('should not report errors for localization syntax', () => { + addCode( + ` + @Component({ + selector: 'my-component', + template: \` +
+ {fieldCount, plural, =0 {no fields} =1 {1 field} other {{{fieldCount}} fields}} +
+ \` + }) + export class MyComponent { + fieldCount: number; + } + `, + fileName => { + const diagnostics = ngService.getDiagnostics(fileName); + onlyModuleDiagnostics(diagnostics); + }); + }); + function addCode(code: string, cb: (fileName: string, content?: string) => void) { const fileName = '/app/app.component.ts'; const originalContent = mockHost.getFileContent(fileName); @@ -255,7 +277,7 @@ describe('diagnostics', () => { if (diagnostics.length > 1) { for (const diagnostic of diagnostics) { if (diagnostic.message.indexOf('MyComponent') >= 0) continue; - console.error(`(${diagnostic.span.start}:${diagnostic.span.end}): ${diagnostic.message}`); + fail(`(${diagnostic.span.start}:${diagnostic.span.end}): ${diagnostic.message}`); } return; }