From 5ceea60c161a87b7d9ec5817c962e52040f752c3 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Tue, 6 Jan 2009 11:48:39 +0100 Subject: [PATCH] SimpleDeclarationAST::lastToken(). --- shared/cplusplus/AST.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/shared/cplusplus/AST.cpp b/shared/cplusplus/AST.cpp index b6ddde0c0e..4342301539 100644 --- a/shared/cplusplus/AST.cpp +++ b/shared/cplusplus/AST.cpp @@ -2184,7 +2184,6 @@ unsigned ReferenceAST::firstToken() const unsigned ReferenceAST::lastToken() const { - assert(0 && "review me"); return amp_token + 1; } @@ -2202,8 +2201,11 @@ unsigned ReturnStatementAST::firstToken() const unsigned ReturnStatementAST::lastToken() const { - assert(0 && "review me"); - return semicolon_token + 1; + if (semicolon_token) + return semicolon_token + 1; + else if (expression) + return expression->lastToken(); + return return_token + 1; } void SimpleDeclarationAST::accept0(ASTVisitor *visitor) @@ -2222,23 +2224,24 @@ unsigned SimpleDeclarationAST::firstToken() const return decl_specifier_seq->firstToken(); else if (declarators) return declarators->firstToken(); - else - return semicolon_token; + return semicolon_token; } unsigned SimpleDeclarationAST::lastToken() const { - assert(0 && "review me"); if (semicolon_token) return semicolon_token + 1; + for (DeclaratorListAST *it = declarators; it; it = it->next) { if (! it->next) return it->lastToken(); } + for (SpecifierAST *it = decl_specifier_seq; it; it = it->next) { if (! it->next) return it->lastToken(); } + return 0; } -- GitLab