diff options
author | Christian Kamm <kamm@incasoftware.de> | 2012-09-18 09:50:23 +0200 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2012-09-19 11:54:50 +0200 |
commit | 9bd86e7d683964d879eef0d98d25809aac102ed9 (patch) | |
tree | 3671007fbf4d6f83d355f39b93576dc415f306c6 /src | |
parent | ecd54059d3a0a18fd5e18c48b2c69761324d22c5 (diff) |
C++11: Allow brace-init-list in range-for statement.
Also drop the unused 'initializer' member from
RangeBasedForStatementAST.
Change-Id: I078ebbc85cafa643af4bfe62d698bf7de71360e4
Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/3rdparty/cplusplus/AST.cpp | 6 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/AST.h | 2 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/ASTClone.cpp | 2 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/ASTMatcher.cpp | 5 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/ASTPatternBuilder.h | 3 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/ASTVisit.cpp | 1 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/Bind.cpp | 1 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/Parser.cpp | 6 | ||||
-rw-r--r-- | src/libs/cplusplus/FindUsages.cpp | 1 |
9 files changed, 6 insertions, 21 deletions
diff --git a/src/libs/3rdparty/cplusplus/AST.cpp b/src/libs/3rdparty/cplusplus/AST.cpp index c3e6e7c6a43..2057a8372e2 100644 --- a/src/libs/3rdparty/cplusplus/AST.cpp +++ b/src/libs/3rdparty/cplusplus/AST.cpp @@ -4362,9 +4362,6 @@ unsigned RangeBasedForStatementAST::firstToken() const if (declarator) if (unsigned candidate = declarator->firstToken()) return candidate; - if (initializer) - if (unsigned candidate = initializer->firstToken()) - return candidate; if (colon_token) return colon_token; if (expression) @@ -4391,9 +4388,6 @@ unsigned RangeBasedForStatementAST::lastToken() const return candidate; if (colon_token) return colon_token + 1; - if (initializer) - if (unsigned candidate = initializer->lastToken()) - return candidate; if (declarator) if (unsigned candidate = declarator->lastToken()) return candidate; diff --git a/src/libs/3rdparty/cplusplus/AST.h b/src/libs/3rdparty/cplusplus/AST.h index 2f1aabf72ba..bcb691910c5 100644 --- a/src/libs/3rdparty/cplusplus/AST.h +++ b/src/libs/3rdparty/cplusplus/AST.h @@ -1921,7 +1921,6 @@ public: SpecifierListAST *type_specifier_list; DeclaratorAST *declarator; // or an expression - ExpressionAST *initializer; unsigned colon_token; ExpressionAST *expression; unsigned rparen_token; @@ -1936,7 +1935,6 @@ public: , lparen_token(0) , type_specifier_list(0) , declarator(0) - , initializer(0) , colon_token(0) , expression(0) , rparen_token(0) diff --git a/src/libs/3rdparty/cplusplus/ASTClone.cpp b/src/libs/3rdparty/cplusplus/ASTClone.cpp index 8fc94476275..7605c049302 100644 --- a/src/libs/3rdparty/cplusplus/ASTClone.cpp +++ b/src/libs/3rdparty/cplusplus/ASTClone.cpp @@ -681,8 +681,6 @@ RangeBasedForStatementAST *RangeBasedForStatementAST::clone(MemoryPool *pool) co *ast_iter = new (pool) SpecifierListAST((iter->value) ? iter->value->clone(pool) : 0); if (declarator) ast->declarator = declarator->clone(pool); - if (initializer) - ast->initializer = initializer->clone(pool); ast->colon_token = colon_token; if (expression) ast->expression = expression->clone(pool); diff --git a/src/libs/3rdparty/cplusplus/ASTMatcher.cpp b/src/libs/3rdparty/cplusplus/ASTMatcher.cpp index 71e030ac3c8..8832cecc57c 100644 --- a/src/libs/3rdparty/cplusplus/ASTMatcher.cpp +++ b/src/libs/3rdparty/cplusplus/ASTMatcher.cpp @@ -1154,11 +1154,6 @@ bool ASTMatcher::match(RangeBasedForStatementAST *node, RangeBasedForStatementAS else if (! AST::match(node->declarator, pattern->declarator, this)) return false; - if (! pattern->initializer) - pattern->initializer = node->initializer; - else if (! AST::match(node->initializer, pattern->initializer, this)) - return false; - pattern->colon_token = node->colon_token; if (! pattern->expression) diff --git a/src/libs/3rdparty/cplusplus/ASTPatternBuilder.h b/src/libs/3rdparty/cplusplus/ASTPatternBuilder.h index 10116ac6bcf..4f69b6999a7 100644 --- a/src/libs/3rdparty/cplusplus/ASTPatternBuilder.h +++ b/src/libs/3rdparty/cplusplus/ASTPatternBuilder.h @@ -447,12 +447,11 @@ public: return __ast; } - RangeBasedForStatementAST *RangeBasedForStatement(SpecifierListAST *type_specifier_list = 0, DeclaratorAST *declarator = 0, ExpressionAST *initializer = 0, ExpressionAST *expression = 0, StatementAST *statement = 0) + RangeBasedForStatementAST *RangeBasedForStatement(SpecifierListAST *type_specifier_list = 0, DeclaratorAST *declarator = 0, ExpressionAST *expression = 0, StatementAST *statement = 0) { RangeBasedForStatementAST *__ast = new (&pool) RangeBasedForStatementAST; __ast->type_specifier_list = type_specifier_list; __ast->declarator = declarator; - __ast->initializer = initializer; __ast->expression = expression; __ast->statement = statement; return __ast; diff --git a/src/libs/3rdparty/cplusplus/ASTVisit.cpp b/src/libs/3rdparty/cplusplus/ASTVisit.cpp index 7fe3e6eca5a..9a7f926cc89 100644 --- a/src/libs/3rdparty/cplusplus/ASTVisit.cpp +++ b/src/libs/3rdparty/cplusplus/ASTVisit.cpp @@ -493,7 +493,6 @@ void RangeBasedForStatementAST::accept0(ASTVisitor *visitor) if (visitor->visit(this)) { accept(type_specifier_list, visitor); accept(declarator, visitor); - accept(initializer, visitor); accept(expression, visitor); accept(statement, visitor); } diff --git a/src/libs/3rdparty/cplusplus/Bind.cpp b/src/libs/3rdparty/cplusplus/Bind.cpp index 2ab9930332c..30745c14bd7 100644 --- a/src/libs/3rdparty/cplusplus/Bind.cpp +++ b/src/libs/3rdparty/cplusplus/Bind.cpp @@ -1332,7 +1332,6 @@ bool Bind::visit(RangeBasedForStatementAST *ast) block->addMember(decl); } - /*ExpressionTy initializer =*/ this->expression(ast->initializer); /*ExpressionTy expression =*/ this->expression(ast->expression); this->statement(ast->statement); (void) switchScope(previousScope); diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp index 04246b9cf06..b4bf8158e22 100644 --- a/src/libs/3rdparty/cplusplus/Parser.cpp +++ b/src/libs/3rdparty/cplusplus/Parser.cpp @@ -3429,7 +3429,11 @@ bool Parser::parseForStatement(StatementAST *&node) ast->colon_token = consumeToken(); blockErrors(blocked); - parseExpression(ast->expression); + if (LA() == T_LBRACE) { + parseBracedInitList0x(ast->expression); + } else { + parseExpression(ast->expression); + } match(T_RPAREN, &ast->rparen_token); parseStatement(ast->statement); diff --git a/src/libs/cplusplus/FindUsages.cpp b/src/libs/cplusplus/FindUsages.cpp index 09e65e9436b..d9ca28a7056 100644 --- a/src/libs/cplusplus/FindUsages.cpp +++ b/src/libs/cplusplus/FindUsages.cpp @@ -1025,7 +1025,6 @@ bool FindUsages::visit(RangeBasedForStatementAST *ast) this->specifier(it->value); } this->declarator(ast->declarator); - this->expression(ast->initializer); // unsigned comma_token = ast->comma_token; this->expression(ast->expression); // unsigned rparen_token = ast->rparen_token; |