From da2aa0df72250811acbb6af51abc961b38bed77a Mon Sep 17 00:00:00 2001 From: Flex Ferrum Date: Sun, 19 Feb 2012 16:33:25 +0400 Subject: C++: Add support for C++11 range-based 'for' loops Change-Id: I7eef048a7952a79f031ae3d0abba68e3c5ffbfb8 Reviewed-by: Roberto Raggi --- src/libs/3rdparty/cplusplus/ASTMatcher.cpp | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/libs/3rdparty/cplusplus/ASTMatcher.cpp') diff --git a/src/libs/3rdparty/cplusplus/ASTMatcher.cpp b/src/libs/3rdparty/cplusplus/ASTMatcher.cpp index 15595ac1700..a7b19ba99fb 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; -- cgit v1.2.3