diff --git a/packages/compiler/src/expression_parser/parser.ts b/packages/compiler/src/expression_parser/parser.ts index 93d2362a43..55d6b40514 100644 --- a/packages/compiler/src/expression_parser/parser.ts +++ b/packages/compiler/src/expression_parser/parser.ts @@ -477,7 +477,9 @@ export class _ParseAST { switch (operator) { case '+': this.advance(); - return this.parsePrefix(); + result = this.parsePrefix(); + return new Binary( + this.span(start), '-', result, new LiteralPrimitive(new ParseSpan(start, start), 0)); case '-': this.advance(); result = this.parsePrefix(); diff --git a/packages/compiler/test/expression_parser/parser_spec.ts b/packages/compiler/test/expression_parser/parser_spec.ts index 0d08b4b4a1..cdd38fb72f 100644 --- a/packages/compiler/test/expression_parser/parser_spec.ts +++ b/packages/compiler/test/expression_parser/parser_spec.ts @@ -103,7 +103,9 @@ import {validate} from './validator'; it('should parse unary - expressions', () => { checkAction('-1', '0 - 1'); - checkAction('+1', '1'); + checkAction('+1', '1 - 0'); + checkAction(`-'1'`, `0 - "1"`); + checkAction(`+'1'`, `"1" - 0`); }); it('should parse unary ! expressions', () => {