diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2010-05-05 10:18:11 +0200 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2010-05-05 16:36:45 +0200 |
commit | c35bb4226bd809a3da3487a9db3f61ba34cce70d (patch) | |
tree | 40ccb6b51727d700d9276b315e61aa8123fb6d2d /src/shared/cplusplus/CheckDeclaration.cpp | |
parent | c8f03b46c1e1dddd63450d3db140b3deba6fcb69 (diff) | |
download | qt-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.cpp | 21 |
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; } |