diff options
Diffstat (limited to 'src/shared/cplusplus/Bind.cpp')
-rw-r--r-- | src/shared/cplusplus/Bind.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp index 3856b3cae5..1d34971ac0 100644 --- a/src/shared/cplusplus/Bind.cpp +++ b/src/shared/cplusplus/Bind.cpp @@ -68,8 +68,6 @@ Bind::Bind(TranslationUnit *unit) _name(0), _declaratorId(0) { - if (unit->ast()) - translationUnit(unit->ast()->asTranslationUnit()); } Scope *Bind::currentScope() const @@ -84,6 +82,13 @@ Scope *Bind::switchScope(Scope *scope) return previousScope; } +void Bind::operator()(TranslationUnitAST *ast, Namespace *globalNamespace) +{ + Scope *previousScope = switchScope(globalNamespace); + translationUnit(ast); + (void) switchScope(previousScope); +} + void Bind::statement(StatementAST *ast) { accept(ast); @@ -703,12 +708,9 @@ void Bind::translationUnit(TranslationUnitAST *ast) if (! ast) return; - Namespace *globalNamespace = control()->newNamespace(0, 0); - Scope *previousScope = switchScope(globalNamespace); for (DeclarationListAST *it = ast->declaration_list; it; it = it->next) { this->declaration(it->value); } - (void) switchScope(previousScope); } bool Bind::visit(ObjCProtocolRefsAST *ast) |