summaryrefslogtreecommitdiff
path: root/src/libs/3rdparty/cplusplus/Parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Parser.cpp')
-rw-r--r--src/libs/3rdparty/cplusplus/Parser.cpp33
1 files changed, 3 insertions, 30 deletions
diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp
index c98f92cc37..86eeaa2f2a 100644
--- a/src/libs/3rdparty/cplusplus/Parser.cpp
+++ b/src/libs/3rdparty/cplusplus/Parser.cpp
@@ -265,13 +265,12 @@ inline void debugPrintCheckCache(bool) {}
return true; \
}
-Parser::Parser(TranslationUnit *unit, int retryParseDeclarationLimit)
+Parser::Parser(TranslationUnit *unit)
: _translationUnit(unit),
_control(unit->control()),
_pool(unit->memoryPool()),
_languageFeatures(unit->languageFeatures()),
_tokenIndex(1),
- _retryParseDeclarationLimit(retryParseDeclarationLimit),
_templateArguments(0),
_inFunctionBody(false),
_inExpressionStatement(false),
@@ -311,20 +310,6 @@ bool Parser::skipUntil(int token)
return false;
}
-void Parser::skipUntilAfterSemicolonOrRightBrace()
-{
- while (int tk = LA()) {
- switch (tk) {
- case T_SEMICOLON:
- case T_RBRACE:
- consumeToken();
- return;
- default:
- consumeToken();
- }
- }
-}
-
void Parser::skipUntilDeclaration()
{
for (; ; consumeToken()) {
@@ -641,25 +626,19 @@ bool Parser::parseTranslationUnit(TranslationUnitAST *&node)
TranslationUnitAST *ast = new (_pool) TranslationUnitAST;
DeclarationListAST **decl = &ast->declaration_list;
- int declarationsInRowFailedToParse = 0;
-
while (LA()) {
unsigned start_declaration = cursor();
DeclarationAST *declaration = 0;
if (parseDeclaration(declaration)) {
- declarationsInRowFailedToParse = 0;
*decl = new (_pool) DeclarationListAST;
(*decl)->value = declaration;
decl = &(*decl)->next;
} else {
error(start_declaration, "expected a declaration");
rewind(start_declaration + 1);
- if (++declarationsInRowFailedToParse == _retryParseDeclarationLimit)
- skipUntilAfterSemicolonOrRightBrace();
- else
- skipUntilDeclaration();
+ skipUntilDeclaration();
}
@@ -808,8 +787,6 @@ bool Parser::parseLinkageBody(DeclarationAST *&node)
ast->lbrace_token = consumeToken();
DeclarationListAST **declaration_ptr = &ast->declaration_list;
- int declarationsInRowFailedToParse = 0;
-
while (int tk = LA()) {
if (tk == T_RBRACE)
break;
@@ -817,17 +794,13 @@ bool Parser::parseLinkageBody(DeclarationAST *&node)
unsigned start_declaration = cursor();
DeclarationAST *declaration = 0;
if (parseDeclaration(declaration)) {
- declarationsInRowFailedToParse = 0;
*declaration_ptr = new (_pool) DeclarationListAST;
(*declaration_ptr)->value = declaration;
declaration_ptr = &(*declaration_ptr)->next;
} else {
error(start_declaration, "expected a declaration");
rewind(start_declaration + 1);
- if (++declarationsInRowFailedToParse == _retryParseDeclarationLimit)
- skipUntilAfterSemicolonOrRightBrace();
- else
- skipUntilDeclaration();
+ skipUntilDeclaration();
}
_templateArgumentList.clear();