summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/AST.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2010-03-24 12:54:25 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2010-03-24 13:49:02 +0100
commit8329d7db943bef3f7929d3802fc31f60e314e179 (patch)
treedabef77315dda11ce9f01250e788a4b5e044a9a4 /src/shared/cplusplus/AST.cpp
parent35be3a9f6c916ddb087628d66bb4bb4e76a1daa5 (diff)
downloadqt-creator-8329d7db943bef3f7929d3802fc31f60e314e179.tar.gz
Recognize C++0x lambda expressions.
Diffstat (limited to 'src/shared/cplusplus/AST.cpp')
-rw-r--r--src/shared/cplusplus/AST.cpp116
1 files changed, 116 insertions, 0 deletions
diff --git a/src/shared/cplusplus/AST.cpp b/src/shared/cplusplus/AST.cpp
index 785b8178d4..7677180455 100644
--- a/src/shared/cplusplus/AST.cpp
+++ b/src/shared/cplusplus/AST.cpp
@@ -2416,3 +2416,119 @@ unsigned ObjCSynchronizedStatementAST::lastToken() const
if (lparen_token) return lparen_token + 1;
return synchronized_token + 1;
}
+
+unsigned LambdaExpressionAST::firstToken() const
+{
+ if (lambda_introducer)
+ return lambda_introducer->firstToken();
+
+ // assert?
+ return 0;
+}
+
+unsigned LambdaExpressionAST::lastToken() const
+{
+ if (statement)
+ return statement->lastToken();
+ else if (lambda_declarator)
+ return lambda_declarator->lastToken();
+
+ return lambda_introducer->lastToken();
+}
+
+unsigned LambdaIntroducerAST::firstToken() const
+{
+ return lbracket_token;
+}
+
+unsigned LambdaIntroducerAST::lastToken() const
+{
+ if (rbracket_token)
+ return rbracket_token + 1;
+ else if (lambda_capture)
+ return lambda_capture->lastToken();
+ return lbracket_token + 1;
+}
+
+unsigned LambdaCaptureAST::firstToken() const
+{
+ if (default_capture)
+ return default_capture;
+
+ else if (capture_list)
+ return capture_list->firstToken();
+
+ // assert?
+ return 0;
+}
+
+unsigned LambdaCaptureAST::lastToken() const
+{
+ if (capture_list)
+ return capture_list->lastToken();
+
+ else if (default_capture)
+ return default_capture + 1;
+
+ // assert?
+ return 0;
+}
+
+unsigned CaptureAST::firstToken() const
+{
+ // ### implement me
+ return 0;
+}
+
+unsigned CaptureAST::lastToken() const
+{
+ // ### implement me
+ return 0;
+}
+
+unsigned LambdaDeclaratorAST::firstToken() const
+{
+ return lparen_token;
+}
+
+unsigned LambdaDeclaratorAST::lastToken() const
+{
+ if (trailing_return_type)
+ return trailing_return_type->lastToken();
+
+ else if (exception_specification)
+ return exception_specification->lastToken();
+
+ else if (mutable_token)
+ return mutable_token + 1;
+
+ else if (attributes)
+ return attributes->lastToken();
+
+ else if (rparen_token)
+ return rparen_token + 1;
+
+ else if (parameter_declaration_clause)
+ return parameter_declaration_clause->lastToken();
+
+ return lparen_token + 1;
+}
+
+unsigned TrailingReturnTypeAST::firstToken() const
+{
+ return arrow_token;
+}
+
+unsigned TrailingReturnTypeAST::lastToken() const
+{
+ if (declarator)
+ return declarator->lastToken();
+
+ else if (type_specifiers)
+ return type_specifiers->lastToken();
+
+ else if (attributes)
+ return attributes->lastToken();
+
+ return arrow_token + 1;
+}