summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Bind.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/cplusplus/Bind.cpp')
-rw-r--r--src/shared/cplusplus/Bind.cpp15
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;
}