From a4245c174ac126a00aa5dbd0924a845364020d02 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Fri, 21 May 2010 15:41:24 +0200 Subject: [PATCH] Improved recovering from errors inside template declarations. --- src/shared/cplusplus/Parser.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index b4f46ac552a..0b7ad74214d 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -986,7 +986,18 @@ bool Parser::parseTemplateDeclaration(DeclarationAST *&node) match(T_GREATER, &ast->greater_token); } - parseDeclaration(ast->declaration); + do { + unsigned start_declaration = cursor(); + + ast->declaration = 0; + if (parseDeclaration(ast->declaration)) + break; + + _translationUnit->error(start_declaration, "expected a declaration"); + rewind(start_declaration + 1); + skipUntilDeclaration(); + } while (LA()); + node = ast; return true; } -- GitLab