diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 64f6bc1e012532105259f4f39852acb5aa698af8..f5a0edd66bc9c780cdf285e76e81a9c69dbc0e18 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -223,14 +223,13 @@ QList<Symbol *> LookupContext::resolve(Name *name, const QList<Scope *> &visible continue; if (q->nameCount() > 1) { - Name *classOrNamespaceName = 0; - - if (q->nameCount() == 1) - classOrNamespaceName = q->nameAt(0); - else - classOrNamespaceName = control()->qualifiedNameId(q->names(), - q->nameCount() - 1); + Name *classOrNamespaceName = control()->qualifiedNameId(q->names(), + q->nameCount() - 1); + if (Identifier *classOrNamespaceNameId = identifier(classOrNamespaceName)) { + if (classOrNamespaceNameId->isEqualTo(id)) + continue; + } const QList<Symbol *> resolvedClassOrNamespace = resolveClassOrNamespace(classOrNamespaceName, visibleScopes); @@ -455,7 +454,7 @@ void LookupContext::expandFunction(Scope *scope, expandedScopes->append(function->arguments()); if (QualifiedNameId *q = function->name()->asQualifiedNameId()) { Name *nestedNameSpec = 0; - if (q->nameCount() == 1 && q->isGlobal()) + if (q->nameCount() == 1) nestedNameSpec = q->nameAt(0); else nestedNameSpec = control()->qualifiedNameId(q->names(), q->nameCount() - 1,