diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-02-14 16:05:25 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-02-15 09:27:01 +0100 |
commit | f4163b8ba01cd1a4f5d91c83a3863939b7809375 (patch) | |
tree | 2d14b5bbfdb23896bbea2382db81af49be391862 /src/shared/cplusplus/ASTMatcher.cpp | |
parent | 2a59d2ae0c889fe6e4ac50a3f110b0103f880c15 (diff) | |
download | qt-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.cpp | 87 |
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; +} + |