summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/ASTMatcher.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-02-14 16:05:25 +0100
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-02-15 09:27:01 +0100
commitf4163b8ba01cd1a4f5d91c83a3863939b7809375 (patch)
tree2d14b5bbfdb23896bbea2382db81af49be391862 /src/shared/cplusplus/ASTMatcher.cpp
parent2a59d2ae0c889fe6e4ac50a3f110b0103f880c15 (diff)
downloadqt-creator-f4163b8ba01cd1a4f5d91c83a3863939b7809375.tar.gz
Added Objective-C @try block parsing.
Diffstat (limited to 'src/shared/cplusplus/ASTMatcher.cpp')
-rw-r--r--src/shared/cplusplus/ASTMatcher.cpp87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/shared/cplusplus/ASTMatcher.cpp b/src/shared/cplusplus/ASTMatcher.cpp
index 627fe3abf8..137b973e56 100644
--- a/src/shared/cplusplus/ASTMatcher.cpp
+++ b/src/shared/cplusplus/ASTMatcher.cpp
@@ -1848,6 +1848,23 @@ bool ASTMatcher::match(ThrowExpressionAST *node, ThrowExpressionAST *pattern)
return true;
}
+bool ASTMatcher::match(ObjCThrowExpressionAST *node, ObjCThrowExpressionAST *pattern)
+{
+ (void) node;
+ (void) pattern;
+
+ pattern->at_token = node->at_token;
+
+ pattern->throw_token = node->throw_token;
+
+ if (! pattern->expression)
+ pattern->expression = node->expression;
+ else if (! AST::match(node->expression, pattern->expression, this))
+ return false;
+
+ return true;
+}
+
bool ASTMatcher::match(TranslationUnitAST *node, TranslationUnitAST *pattern)
{
(void) node;
@@ -2632,3 +2649,73 @@ bool ASTMatcher::match(ObjCSynchronizedStatementAST *node, ObjCSynchronizedState
return true;
}
+bool ASTMatcher::match(ObjCTryBlockStatementAST *node, ObjCTryBlockStatementAST *pattern)
+{
+ (void) node;
+ (void) pattern;
+
+ pattern->at_token = node->at_token;
+
+ pattern->try_token = node->try_token;
+
+ if (! pattern->statement)
+ pattern->statement = node->statement;
+ else if (! AST::match(node->statement, pattern->statement, this))
+ return false;
+
+ if (! pattern->catch_clause_list)
+ pattern->catch_clause_list = node->catch_clause_list;
+ else if (! AST::match(node->catch_clause_list, pattern->catch_clause_list, this))
+ return false;
+
+ if (! pattern->finally_clause)
+ pattern->finally_clause = node->finally_clause;
+ else if (! AST::match(node->finally_clause, pattern->finally_clause, this))
+ return false;
+
+ return true;
+}
+
+bool ASTMatcher::match(ObjCCatchClauseAST *node, ObjCCatchClauseAST *pattern)
+{
+ (void) node;
+ (void) pattern;
+
+ pattern->at_token = node->at_token;
+
+ pattern->catch_token = node->catch_token;
+
+ pattern->lparen_token = node->lparen_token;
+
+ if (! pattern->exception_declaration)
+ pattern->exception_declaration = node->exception_declaration;
+ else if (! AST::match(node->exception_declaration, pattern->exception_declaration, 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(ObjCFinallyClauseAST *node, ObjCFinallyClauseAST *pattern)
+{
+ (void) node;
+ (void) pattern;
+
+ pattern->at_token = node->at_token;
+
+ pattern->finally_token = node->finally_token;
+
+ if (! pattern->statement)
+ pattern->statement = node->statement;
+ else if (! AST::match(node->statement, pattern->statement, this))
+ return false;
+
+ return true;
+}
+