aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus/ASTMatcher.cpp
diff options
context:
space:
mode:
authorFlex Ferrum <flexferrum@gmail.com>2012-02-19 16:33:25 +0400
committerRoberto Raggi <roberto.raggi@nokia.com>2012-02-21 15:27:00 +0100
commitda2aa0df72250811acbb6af51abc961b38bed77a (patch)
tree696c211293b82b7cb470f13899dc85d0da83d708 /src/libs/3rdparty/cplusplus/ASTMatcher.cpp
parent7f943caedbc583d73a7218d1f922a3e8afd2c0b4 (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.cpp41
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;