diff options
| author | Roberto Raggi <roberto.raggi@nokia.com> | 2010-03-24 12:54:25 +0100 |
|---|---|---|
| committer | Roberto Raggi <roberto.raggi@nokia.com> | 2010-03-24 13:49:02 +0100 |
| commit | 8329d7db943bef3f7929d3802fc31f60e314e179 (patch) | |
| tree | dabef77315dda11ce9f01250e788a4b5e044a9a4 /src/shared/cplusplus/AST.cpp | |
| parent | 35be3a9f6c916ddb087628d66bb4bb4e76a1daa5 (diff) | |
| download | qt-creator-8329d7db943bef3f7929d3802fc31f60e314e179.tar.gz | |
Recognize C++0x lambda expressions.
Diffstat (limited to 'src/shared/cplusplus/AST.cpp')
| -rw-r--r-- | src/shared/cplusplus/AST.cpp | 116 |
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; +} |
