From 40e467d7b4bcd166ae8d893318fad93971eff4dc Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Thu, 16 Aug 2018 20:52:46 -0700 Subject: [PATCH] fix(Ast): Fix #1502, bad recovery. --- angular_ast/lib/src/visitors/desugar_visitor.dart | 6 +++++- angular_ast/test/expression/micro/parser_test.dart | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/angular_ast/lib/src/visitors/desugar_visitor.dart b/angular_ast/lib/src/visitors/desugar_visitor.dart index efa440e3c9..dc95a84c90 100644 --- a/angular_ast/lib/src/visitors/desugar_visitor.dart +++ b/angular_ast/lib/src/visitors/desugar_visitor.dart @@ -196,7 +196,11 @@ class DesugarVisitor implements TemplateAstVisitor { ); } catch (e) { exceptionHandler.handle(e); - return astNode; + if (astNode is EmbeddedTemplateAst) { + return astNode; + } + // We parsed this as something unexpected, and should not continue. + rethrow; } if (micro != null) { propertiesToAdd.addAll(micro.properties); diff --git a/angular_ast/test/expression/micro/parser_test.dart b/angular_ast/test/expression/micro/parser_test.dart index f089ad3ca1..5a958c30c4 100644 --- a/angular_ast/test/expression/micro/parser_test.dart +++ b/angular_ast/test/expression/micro/parser_test.dart @@ -2,6 +2,7 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'package:angular_ast/angular_ast.dart'; import 'package:angular_ast/src/ast.dart'; import 'package:angular_ast/src/expression/micro/ast.dart'; import 'package:angular_ast/src/expression/micro/parser.dart'; @@ -124,4 +125,11 @@ void main() { ), ); }); + + test('should a parser error on trailing semi-colon', () { + expect( + () => parse('ngFor', 'let item of items;', 0), + throwsA(TypeMatcher()), + ); + }); }