summaryrefslogtreecommitdiff
path: root/shared/cplusplus/AST.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <qtc-committer@nokia.com>2009-01-05 10:18:16 +0100
committerRoberto Raggi <qtc-committer@nokia.com>2009-01-05 10:18:16 +0100
commitdfb837321101b924690b4b1588365eaa7930418a (patch)
treea52f390c59929c4127388ec60489aa7e1f549893 /shared/cplusplus/AST.cpp
parent80faa8ea7eae270d15600b337d906fdd3feccc1e (diff)
downloadqt-creator-dfb837321101b924690b4b1588365eaa7930418a.tar.gz
Implemented ForStatementAST::lastToken().
Diffstat (limited to 'shared/cplusplus/AST.cpp')
-rw-r--r--shared/cplusplus/AST.cpp30
1 files changed, 22 insertions, 8 deletions
diff --git a/shared/cplusplus/AST.cpp b/shared/cplusplus/AST.cpp
index 0926323ed0..ccf41ea9ed 100644
--- a/shared/cplusplus/AST.cpp
+++ b/shared/cplusplus/AST.cpp
@@ -1362,7 +1362,6 @@ unsigned ExpressionListAST::firstToken() const
unsigned ExpressionListAST::lastToken() const
{
- assert(0 && "review me");
for (const ExpressionListAST *it = this; it; it = it->next) {
if (! it->next)
return it->expression->lastToken();
@@ -1380,13 +1379,12 @@ void ExpressionOrDeclarationStatementAST::accept0(ASTVisitor *visitor)
unsigned ExpressionOrDeclarationStatementAST::firstToken() const
{
- return expression->firstToken();
+ return declaration->firstToken();
}
unsigned ExpressionOrDeclarationStatementAST::lastToken() const
{
- assert(0 && "review me");
- return expression->lastToken();
+ return declaration->lastToken();
}
void ExpressionStatementAST::accept0(ASTVisitor *visitor)
@@ -1405,8 +1403,12 @@ unsigned ExpressionStatementAST::firstToken() const
unsigned ExpressionStatementAST::lastToken() const
{
- assert(0 && "review me");
- return expression->lastToken();
+ if (semicolon_token)
+ return semicolon_token + 1;
+ else if (expression)
+ return expression->lastToken();
+ // ### assert?
+ return 0;
}
void ForStatementAST::accept0(ASTVisitor *visitor)
@@ -1426,10 +1428,22 @@ unsigned ForStatementAST::firstToken() const
unsigned ForStatementAST::lastToken() const
{
- assert(0 && "review me");
if (statement)
return statement->lastToken();
- return rparen_token + 1;
+ else if (rparen_token)
+ return rparen_token + 1;
+ else if (expression)
+ return expression->lastToken();
+ else if (semicolon_token)
+ return semicolon_token + 1;
+ else if (condition)
+ return condition->lastToken();
+ else if (initializer)
+ return initializer->lastToken();
+ else if (lparen_token)
+ return lparen_token + 1;
+
+ return for_token + 1;
}
void FunctionDeclaratorAST::accept0(ASTVisitor *visitor)