diff options
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; } |