diff options
author | Flex Ferrum <flexferrum@gmail.com> | 2012-02-19 16:33:25 +0400 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2012-02-21 15:27:00 +0100 |
commit | da2aa0df72250811acbb6af51abc961b38bed77a (patch) | |
tree | 696c211293b82b7cb470f13899dc85d0da83d708 /src/libs/3rdparty/cplusplus/ASTMatcher.cpp | |
parent | 7f943caedbc583d73a7218d1f922a3e8afd2c0b4 (diff) |
C++: Add support for C++11 range-based 'for' loops
Change-Id: I7eef048a7952a79f031ae3d0abba68e3c5ffbfb8
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Diffstat (limited to 'src/libs/3rdparty/cplusplus/ASTMatcher.cpp')
-rw-r--r-- | src/libs/3rdparty/cplusplus/ASTMatcher.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/ASTMatcher.cpp b/src/libs/3rdparty/cplusplus/ASTMatcher.cpp index 15595ac170..a7b19ba99f 100644 --- a/src/libs/3rdparty/cplusplus/ASTMatcher.cpp +++ b/src/libs/3rdparty/cplusplus/ASTMatcher.cpp @@ -1131,6 +1131,47 @@ bool ASTMatcher::match(ForeachStatementAST *node, ForeachStatementAST *pattern) return true; } +bool ASTMatcher::match(RangeBasedForStatementAST *node, RangeBasedForStatementAST *pattern) +{ + (void) node; + (void) pattern; + + pattern->for_token = node->for_token; + + pattern->lparen_token = node->lparen_token; + + if (! pattern->type_specifier_list) + pattern->type_specifier_list = node->type_specifier_list; + else if (! AST::match(node->type_specifier_list, pattern->type_specifier_list, this)) + return false; + + if (! pattern->declarator) + pattern->declarator = node->declarator; + 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) + pattern->expression = node->expression; + else if (! AST::match(node->expression, pattern->expression, this)) + return false; + + pattern->rparen_token = node->rparen_token; + + if (! pattern->statement) + pattern->statement = node->statement; + else if (! AST::match(node->statement, pattern->statement, this)) + return false; + + return true; +} + bool ASTMatcher::match(ForStatementAST *node, ForStatementAST *pattern) { (void) node; |