diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp index cb7dc7311ab..1a048e6f236 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; }