diff options
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Parser.cpp')
-rw-r--r-- | src/libs/3rdparty/cplusplus/Parser.cpp | 33 |
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(); |