summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libs/cplusplus/LookupContext.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index 7418b8e808..be608af2b9 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -767,7 +767,17 @@ bool CreateBindings::visit(Namespace *ns)
bool CreateBindings::visit(Class *klass)
{
- ClassOrNamespace *previous = enterEntity(klass);
+ ClassOrNamespace *previous = _currentClassOrNamespace;
+ ClassOrNamespace *binding = 0;
+
+ if (klass->name() && klass->name()->isQualifiedNameId())
+ binding = _currentClassOrNamespace->lookupClassOrNamespace(klass->name());
+
+ if (! binding)
+ binding = _currentClassOrNamespace->findOrCreate(klass->name());
+
+ _currentClassOrNamespace = binding;
+ _currentClassOrNamespace->addSymbol(klass);
for (unsigned i = 0; i < klass->baseClassCount(); ++i)
process(klass->baseClassAt(i));