diff --git a/modules/angular2/src/compiler/html_parser.ts b/modules/angular2/src/compiler/html_parser.ts index b9333c0295..cf3474ba02 100644 --- a/modules/angular2/src/compiler/html_parser.ts +++ b/modules/angular2/src/compiler/html_parser.ts @@ -171,17 +171,14 @@ class TreeBuilder { private _consumeEndTag(endTagToken: HtmlToken) { var fullName = getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement()); - if (!this._popElement(fullName)) { - let msg; - if (getHtmlTagDefinition(fullName).isVoid) { - msg = - `Void elements do not have end tags (they can not have content) "${endTagToken.parts[1]}"`; - } else { - msg = `Unexpected closing tag "${endTagToken.parts[1]}"`; - } - - this.errors.push(HtmlTreeError.create(fullName, endTagToken.sourceSpan.start, msg)); + if (getHtmlTagDefinition(fullName).isVoid) { + this.errors.push( + HtmlTreeError.create(fullName, endTagToken.sourceSpan.start, + `Void elements do not have end tags "${endTagToken.parts[1]}"`)); + } else if (!this._popElement(fullName)) { + this.errors.push(HtmlTreeError.create(fullName, endTagToken.sourceSpan.start, + `Unexpected closing tag "${endTagToken.parts[1]}"`)); } } diff --git a/modules/angular2/test/compiler/html_parser_spec.ts b/modules/angular2/test/compiler/html_parser_spec.ts index f851c1ec1c..d779f0dd4b 100644 --- a/modules/angular2/test/compiler/html_parser_spec.ts +++ b/modules/angular2/test/compiler/html_parser_spec.ts @@ -85,11 +85,6 @@ export function main() { ]); }); - it('should tolerate end tags for void elements when they have no content', () => { - expect(humanizeDom(parser.parse('', 'TestComp'))) - .toEqual([[HtmlElementAst, 'input', 0]]); - }); - it('should support optional end tags', () => { expect(humanizeDom(parser.parse('

1

2

', 'TestComp'))) .toEqual([ @@ -214,30 +209,11 @@ export function main() { expect(humanizeErrors(errors)).toEqual([['p', 'Unexpected closing tag "p"', '0:5']]); }); - it('should report text content in void elements', () => { - let errors = parser.parse('content', 'TestComp').errors; + it('should report closing tag for void elements', () => { + let errors = parser.parse('', 'TestComp').errors; expect(errors.length).toEqual(1); expect(humanizeErrors(errors)) - .toEqual([ - [ - 'input', - 'Void elements do not have end tags (they can not have content) "input"', - '0:14' - ] - ]); - }); - - it('should report html content in void elements', () => { - let errors = parser.parse('

', 'TestComp').errors; - expect(errors.length).toEqual(1); - expect(humanizeErrors(errors)) - .toEqual([ - [ - 'input', - 'Void elements do not have end tags (they can not have content) "input"', - '0:14' - ] - ]); + .toEqual([['input', 'Void elements do not have end tags "input"', '0:7']]); }); it('should also report lexer errors', () => { diff --git a/modules/angular2/test/compiler/template_normalizer_spec.ts b/modules/angular2/test/compiler/template_normalizer_spec.ts index c90ab17046..5d1182a326 100644 --- a/modules/angular2/test/compiler/template_normalizer_spec.ts +++ b/modules/angular2/test/compiler/template_normalizer_spec.ts @@ -241,7 +241,7 @@ export function main() { var template = normalizer.normalizeLoadedTemplate( dirType, new CompileTemplateMetadata({encapsulation: null, styles: [], styleUrls: []}), - '', 'package:some/module/'); + '', 'package:some/module/'); expect(template.styleUrls).toEqual([]); })); @@ -250,8 +250,7 @@ export function main() { var template = normalizer.normalizeLoadedTemplate( dirType, new CompileTemplateMetadata({encapsulation: null, styles: [], styleUrls: []}), - '', - 'package:some/module/'); + '', 'package:some/module/'); expect(template.styleUrls).toEqual([]); })); diff --git a/modules/angular2/test/compiler/template_parser_spec.ts b/modules/angular2/test/compiler/template_parser_spec.ts index 574c054e10..b9901638e9 100644 --- a/modules/angular2/test/compiler/template_parser_spec.ts +++ b/modules/angular2/test/compiler/template_parser_spec.ts @@ -774,8 +774,7 @@ Property binding a not used by any directive on an embedded template ("[ERROR -> it('should keep elements if they have an absolute non package: url', () => { - expect( - humanizeTplAst(parse('a', []))) + expect(humanizeTplAst(parse('a', []))) .toEqual([ [ElementAst, 'link'], [AttrAst, 'rel', 'stylesheet'], @@ -785,22 +784,21 @@ Property binding a not used by any directive on an embedded template ("[ERROR -> }); it('should keep elements if they have no uri', () => { - expect(humanizeTplAst(parse('a', []))) + expect(humanizeTplAst(parse('a', []))) .toEqual([[ElementAst, 'link'], [AttrAst, 'rel', 'stylesheet'], [TextAst, 'a']]); - expect(humanizeTplAst(parse('a', []))) + expect(humanizeTplAst(parse('a', []))) .toEqual([[ElementAst, 'link'], [AttrAst, 'REL', 'stylesheet'], [TextAst, 'a']]); }); it('should ignore elements if they have a relative uri', () => { - expect(humanizeTplAst(parse('a', []))) + expect(humanizeTplAst(parse('a', []))) .toEqual([[TextAst, 'a']]); - expect(humanizeTplAst(parse('a', []))) + expect(humanizeTplAst(parse('a', []))) .toEqual([[TextAst, 'a']]); }); it('should ignore elements if they have a package: uri', () => { - expect(humanizeTplAst( - parse('a', []))) + expect(humanizeTplAst(parse('a', []))) .toEqual([[TextAst, 'a']]); }); @@ -835,8 +833,7 @@ Property binding a not used by any directive on an embedded template ("[ERROR -> it('should ignore elements inside of elements with ng-non-bindable', () => { - expect(humanizeTplAst( - parse('
a
', []))) + expect(humanizeTplAst(parse('
a
', []))) .toEqual([[ElementAst, 'div'], [AttrAst, 'ng-non-bindable', ''], [TextAst, 'a']]); }); diff --git a/modules/angular2/test/core/linker/integration_spec.ts b/modules/angular2/test/core/linker/integration_spec.ts index c6313b3d1f..f647a1cf4e 100644 --- a/modules/angular2/test/core/linker/integration_spec.ts +++ b/modules/angular2/test/core/linker/integration_spec.ts @@ -1007,7 +1007,7 @@ export function main() { tcb.overrideView( MyComp, new ViewMetadata({ template: - '', + '', directives: [ DirectiveListeningDomEventPrevent, DirectiveListeningDomEventNoPrevent diff --git a/modules/angular2/test/web_workers/worker/renderer_integration_spec.ts b/modules/angular2/test/web_workers/worker/renderer_integration_spec.ts index 65d3b9ab83..cf7e14de2f 100644 --- a/modules/angular2/test/web_workers/worker/renderer_integration_spec.ts +++ b/modules/angular2/test/web_workers/worker/renderer_integration_spec.ts @@ -211,8 +211,7 @@ export function main() { it('should call actions on the element independent of the compilation', inject([TestComponentBuilder, Renderer, AsyncTestCompleter], (tcb: TestComponentBuilder, renderer: Renderer, async) => { - tcb.overrideView(MyComp, - new ViewMetadata({template: ''})) + tcb.overrideView(MyComp, new ViewMetadata({template: ''})) .createAsync(MyComp) .then((fixture) => { var elRef = fixture.debugElement.componentViewChildren[0].elementRef;