diff options
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r-- | src/shared/cplusplus/Parser.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index b4f46ac552..0b7ad74214 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; } |