summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/CheckDeclaration.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2010-05-05 10:18:11 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2010-05-05 16:36:45 +0200
commitc35bb4226bd809a3da3487a9db3f61ba34cce70d (patch)
tree40ccb6b51727d700d9276b315e61aa8123fb6d2d /src/shared/cplusplus/CheckDeclaration.cpp
parentc8f03b46c1e1dddd63450d3db140b3deba6fcb69 (diff)
downloadqt-creator-c35bb4226bd809a3da3487a9db3f61ba34cce70d.tar.gz
Introduce Namespace aliases and store the TranslationUnit instead of the Control.
Diffstat (limited to 'src/shared/cplusplus/CheckDeclaration.cpp')
-rw-r--r--src/shared/cplusplus/CheckDeclaration.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/shared/cplusplus/CheckDeclaration.cpp b/src/shared/cplusplus/CheckDeclaration.cpp
index 01a10222c9..00f66ae6e0 100644
--- a/src/shared/cplusplus/CheckDeclaration.cpp
+++ b/src/shared/cplusplus/CheckDeclaration.cpp
@@ -409,8 +409,27 @@ bool CheckDeclaration::visit(NamespaceAST *ast)
return false;
}
-bool CheckDeclaration::visit(NamespaceAliasDefinitionAST *)
+bool CheckDeclaration::visit(NamespaceAliasDefinitionAST *ast)
{
+ const Name *name = 0;
+
+ if (const Identifier *id = identifier(ast->namespace_name_token))
+ name = control()->nameId(id);
+
+ unsigned sourceLocation = ast->firstToken();
+
+ if (ast->namespace_name_token)
+ sourceLocation = ast->namespace_name_token;
+
+ const Name *namespaceName = semantic()->check(ast->name, _scope);
+
+ NamespaceAlias *namespaceAlias = control()->newNamespaceAlias(sourceLocation, name);
+ namespaceAlias->setNamespaceName(namespaceName);
+ namespaceAlias->setStartOffset(tokenAt(ast->firstToken()).offset);
+ namespaceAlias->setEndOffset(tokenAt(ast->lastToken()).offset);
+ //ast->symbol = namespaceAlias;
+ _scope->enterSymbol(namespaceAlias);
+
return false;
}