diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 7418b8e8087539a1be3b4be0e8bb0eb0cc9418c4..be608af2b995c5b26d9cd07e0a8921b0872dcfdf 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));