summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2010-08-13 18:16:17 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2010-08-13 18:16:17 +0200
commite306254f502e16e163d45d458703899db5c6a7fc (patch)
tree2fe214e1f28f3a01ebc989788ca37065e6ab6796 /src/shared/cplusplus
parentb3764bedeef6a217dc8d0ae0fc4e05975ce1f273 (diff)
downloadqt-creator-e306254f502e16e163d45d458703899db5c6a7fc.tar.gz
Fixed the ranges for the scope regions and process ConditionAST nodes
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/Bind.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp
index 9b5fe050ec..54688596af 100644
--- a/src/shared/cplusplus/Bind.cpp
+++ b/src/shared/cplusplus/Bind.cpp
@@ -1178,7 +1178,7 @@ bool Bind::visit(ExpressionStatementAST *ast)
bool Bind::visit(ForeachStatementAST *ast)
{
Block *block = control()->newBlock(ast->firstToken());
- const unsigned startScopeToken = ast->lparen_token ? ast->lastToken() : ast->firstToken();
+ const unsigned startScopeToken = ast->lparen_token ? ast->lparen_token : ast->firstToken();
block->setStartOffset(tokenAt(startScopeToken).end());
block->setEndOffset(tokenAt(ast->lastToken() - 1).end());
_scope->addMember(block);
@@ -1210,7 +1210,7 @@ bool Bind::visit(ForeachStatementAST *ast)
bool Bind::visit(ForStatementAST *ast)
{
Block *block = control()->newBlock(ast->firstToken());
- const unsigned startScopeToken = ast->lparen_token ? ast->lastToken() : ast->firstToken();
+ const unsigned startScopeToken = ast->lparen_token ? ast->lparen_token : ast->firstToken();
block->setStartOffset(tokenAt(startScopeToken).end());
block->setEndOffset(tokenAt(ast->lastToken() - 1).end());
_scope->addMember(block);
@@ -1230,7 +1230,7 @@ bool Bind::visit(ForStatementAST *ast)
bool Bind::visit(IfStatementAST *ast)
{
Block *block = control()->newBlock(ast->firstToken());
- const unsigned startScopeToken = ast->lparen_token ? ast->lastToken() : ast->firstToken();
+ const unsigned startScopeToken = ast->lparen_token ? ast->lparen_token : ast->firstToken();
block->setStartOffset(tokenAt(startScopeToken).end());
block->setEndOffset(tokenAt(ast->lastToken() - 1).end());
_scope->addMember(block);
@@ -1286,7 +1286,7 @@ bool Bind::visit(ReturnStatementAST *ast)
bool Bind::visit(SwitchStatementAST *ast)
{
Block *block = control()->newBlock(ast->firstToken());
- const unsigned startScopeToken = ast->lparen_token ? ast->lastToken() : ast->firstToken();
+ const unsigned startScopeToken = ast->lparen_token ? ast->lparen_token : ast->firstToken();
block->setStartOffset(tokenAt(startScopeToken).end());
block->setEndOffset(tokenAt(ast->lastToken() - 1).end());
_scope->addMember(block);
@@ -1312,7 +1312,7 @@ bool Bind::visit(TryBlockStatementAST *ast)
bool Bind::visit(CatchClauseAST *ast)
{
Block *block = control()->newBlock(ast->firstToken());
- const unsigned startScopeToken = ast->lparen_token ? ast->lastToken() : ast->firstToken();
+ const unsigned startScopeToken = ast->lparen_token ? ast->lparen_token : ast->firstToken();
block->setStartOffset(tokenAt(startScopeToken).end());
block->setEndOffset(tokenAt(ast->lastToken() - 1).end());
_scope->addMember(block);
@@ -1329,7 +1329,7 @@ bool Bind::visit(CatchClauseAST *ast)
bool Bind::visit(WhileStatementAST *ast)
{
Block *block = control()->newBlock(ast->firstToken());
- const unsigned startScopeToken = ast->lparen_token ? ast->lastToken() : ast->firstToken();
+ const unsigned startScopeToken = ast->lparen_token ? ast->lparen_token : ast->firstToken();
block->setStartOffset(tokenAt(startScopeToken).end());
block->setEndOffset(tokenAt(ast->lastToken() - 1).end());
_scope->addMember(block);
@@ -1345,7 +1345,7 @@ bool Bind::visit(WhileStatementAST *ast)
bool Bind::visit(ObjCFastEnumerationAST *ast)
{
Block *block = control()->newBlock(ast->firstToken());
- const unsigned startScopeToken = ast->lparen_token ? ast->lastToken() : ast->firstToken();
+ const unsigned startScopeToken = ast->lparen_token ? ast->lparen_token : ast->firstToken();
block->setStartOffset(tokenAt(startScopeToken).end());
block->setEndOffset(tokenAt(ast->lastToken() - 1).end());
_scope->addMember(block);
@@ -1444,6 +1444,14 @@ bool Bind::visit(ConditionAST *ast)
}
DeclaratorIdAST *declaratorId = 0;
type = this->declarator(ast->declarator, type, &declaratorId);
+
+ if (declaratorId && declaratorId->name) {
+ unsigned sourceLocation = declaratorId->name->firstToken();
+ Declaration *decl = control()->newDeclaration(sourceLocation, declaratorId->name->name);
+ decl->setType(type);
+ _scope->addMember(decl);
+ }
+
return false;
}