diff --git a/packages/compiler/src/ml_parser/lexer.ts b/packages/compiler/src/ml_parser/lexer.ts index 09d976a7b5..6864d5a550 100644 --- a/packages/compiler/src/ml_parser/lexer.ts +++ b/packages/compiler/src/ml_parser/lexer.ts @@ -523,7 +523,7 @@ class _Tokenizer { tagName = openTagToken.parts[1]; this._attemptCharCodeUntilFn(isNotWhitespace); while (this._cursor.peek() !== chars.$SLASH && this._cursor.peek() !== chars.$GT && - this._cursor.peek() !== chars.$LT) { + this._cursor.peek() !== chars.$LT && this._cursor.peek() !== chars.$EOF) { this._consumeAttributeName(); this._attemptCharCodeUntilFn(isNotWhitespace); if (this._attemptCharCode(chars.$EQ)) { @@ -774,7 +774,8 @@ function isNotWhitespace(code: number): boolean { function isNameEnd(code: number): boolean { return chars.isWhitespace(code) || code === chars.$GT || code === chars.$LT || - code === chars.$SLASH || code === chars.$SQ || code === chars.$DQ || code === chars.$EQ; + code === chars.$SLASH || code === chars.$SQ || code === chars.$DQ || code === chars.$EQ || + code === chars.$EOF; } function isPrefixEnd(code: number): boolean { diff --git a/packages/compiler/test/ml_parser/lexer_spec.ts b/packages/compiler/test/ml_parser/lexer_spec.ts index 179b49f01d..7d451b52ea 100644 --- a/packages/compiler/test/ml_parser/lexer_spec.ts +++ b/packages/compiler/test/ml_parser/lexer_spec.ts @@ -234,6 +234,13 @@ import {ParseLocation, ParseSourceFile, ParseSourceSpan} from '../../src/parse_u }); describe('tags', () => { + it('terminated with EOF', () => { + expect(tokenizeAndHumanizeSourceSpans('