diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2009-07-15 12:11:07 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2009-07-15 12:11:07 +0200 |
commit | c8f155c0fc2fd64f01d50f6c085dd811cfdae17e (patch) | |
tree | 5e54ccb51b84b6cf773f401a0517edf80a1370fd /src/shared/cplusplus/AST.cpp | |
parent | c13f83268a1d9e48d9f497017764a9d9eed6f662 (diff) | |
download | qt-creator-c8f155c0fc2fd64f01d50f6c085dd811cfdae17e.tar.gz |
AST additions for ObjC send_msg.
Diffstat (limited to 'src/shared/cplusplus/AST.cpp')
-rw-r--r-- | src/shared/cplusplus/AST.cpp | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/src/shared/cplusplus/AST.cpp b/src/shared/cplusplus/AST.cpp index 3da0dbf464..6a72e3b90a 100644 --- a/src/shared/cplusplus/AST.cpp +++ b/src/shared/cplusplus/AST.cpp @@ -2057,11 +2057,51 @@ unsigned ObjCMessageExpressionAST::firstToken() const unsigned ObjCMessageExpressionAST::lastToken() const { - if (rbracket_token) return rbracket_token + 1; + if (rbracket_token) + return rbracket_token + 1; - // FIXME: TODO + if (receiver_expression) + return receiver_expression->lastToken(); + + if (argument_list) + return argument_list->lastToken(); return lbracket_token + 1; } +unsigned ObjCMessageArgumentListAST::firstToken() const +{ + if (arg) + return arg->firstToken(); + // ### assert? + return 0; +} + +unsigned ObjCMessageArgumentListAST::lastToken() const +{ + for (const ObjCMessageArgumentListAST *it = this; it; it = it->next) { + if (! it->next && it->arg) { + return it->arg->lastToken(); + } + } + // ### assert? + return 0; +} + +unsigned ObjCMessageArgumentAST::firstToken() const +{ + return parameter_key_identifier; +} + +unsigned ObjCMessageArgumentAST::lastToken() const +{ + if (parameter_value_expression) + return parameter_value_expression->lastToken(); + + if (colon_token) + return colon_token + 1; + + return parameter_key_identifier + 1; +} + CPLUSPLUS_END_NAMESPACE |