From 8d613c1d42da633011d7fb200ba2bae9bce8703e Mon Sep 17 00:00:00 2001 From: Trotyl Date: Sun, 18 Feb 2018 00:05:41 +0800 Subject: [PATCH] feat(compiler): allow trailing comma in array literal (#22277) Allows `[1, 2, ]` syntax in angular expressions. closes #20773 PR Close #22277 --- packages/compiler/src/expression_parser/parser.ts | 11 +++++++---- .../compiler/test/expression_parser/parser_spec.ts | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/compiler/src/expression_parser/parser.ts b/packages/compiler/src/expression_parser/parser.ts index 958f7e1230..863c860993 100644 --- a/packages/compiler/src/expression_parser/parser.ts +++ b/packages/compiler/src/expression_parser/parser.ts @@ -820,11 +820,14 @@ export class _ParseAST { parseExpressionList(terminator: number): AST[] { const result: AST[] = []; - if (!this.next.isCharacter(terminator)) { - do { + + do { + if (!this.next.isCharacter(terminator)) { result.push(this.parsePipe()); - } while (this.consumeOptionalCharacter(chars.$COMMA)); - } + } else { + break; + } + } while (this.consumeOptionalCharacter(chars.$COMMA)); return result; } diff --git a/packages/compiler/test/expression_parser/parser_spec.ts b/packages/compiler/test/expression_parser/parser_spec.ts index 52db296380..7140f5d9bd 100644 --- a/packages/compiler/test/expression_parser/parser_spec.ts +++ b/packages/compiler/test/expression_parser/parser_spec.ts @@ -106,6 +106,7 @@ describe('parser', () => { checkAction('[]'); checkAction('[].length'); checkAction('[1, 2].length'); + checkAction('[1, 2,]', '[1, 2]'); }); it('should parse map', () => {