diff options
Diffstat (limited to 'src/shared/cplusplus/Bind.cpp')
-rw-r--r-- | src/shared/cplusplus/Bind.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp index cb7dc7311a..1a048e6f23 100644 --- a/src/shared/cplusplus/Bind.cpp +++ b/src/shared/cplusplus/Bind.cpp @@ -1660,8 +1660,21 @@ bool Bind::visit(NamespaceAST *ast) for (SpecifierListAST *it = ast->attribute_list; it; it = it->next) { type = this->specifier(it->value, type); } + + unsigned sourceLocation = ast->firstToken(); + const Name *namespaceName = 0; + if (ast->identifier_token) { + sourceLocation = ast->identifier_token; + namespaceName = control()->nameId(identifier(ast->identifier_token)); + } + + Namespace *ns = control()->newNamespace(sourceLocation, namespaceName); + ast->symbol = ns; + _scope->addMember(ns); + + Scope *previousScope = switchScope(ns); this->declaration(ast->linkage_body); - // Namespace *symbol = ast->symbol; + (void) switchScope(previousScope); return false; } |