summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2010-08-13 10:35:33 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2010-08-13 10:35:33 +0200
commit89dba0e57bfe375ad9945de6d99e0fc89c68ce06 (patch)
tree123d414d9555ad254ed8444e967ec26fc898cc96 /src/shared/cplusplus
parent51645710b0ff002ef675f5e8f90296a0a2f97a93 (diff)
downloadqt-creator-89dba0e57bfe375ad9945de6d99e0fc89c68ce06.tar.gz
Create symbols for the formal arguments.
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/Bind.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp
index 762922dc56..74ae70c839 100644
--- a/src/shared/cplusplus/Bind.cpp
+++ b/src/shared/cplusplus/Bind.cpp
@@ -1684,7 +1684,21 @@ bool Bind::visit(ParameterDeclarationAST *ast)
type = this->declarator(ast->declarator, type, &declaratorId);
// unsigned equal_token = ast->equal_token;
ExpressionTy expression = this->expression(ast->expression);
- // Argument *symbol = ast->symbol;
+
+ unsigned sourceLocation = ast->firstToken();
+ if (declaratorId)
+ sourceLocation = declaratorId->firstToken();
+
+ const Name *argName = 0;
+ if (declaratorId && declaratorId->name)
+ argName = declaratorId->name->name;
+
+ Argument *arg = control()->newArgument(sourceLocation, argName);
+ arg->setType(type);
+
+ _scope->addMember(arg);
+
+ ast->symbol = arg;
return false;
}