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