summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/AST.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2009-07-15 12:11:07 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2009-07-15 12:11:07 +0200
commitc8f155c0fc2fd64f01d50f6c085dd811cfdae17e (patch)
tree5e54ccb51b84b6cf773f401a0517edf80a1370fd /src/shared/cplusplus/AST.cpp
parentc13f83268a1d9e48d9f497017764a9d9eed6f662 (diff)
downloadqt-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.cpp44
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