diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index 8b05abb3d4b55856fbff990b77fe7125c3e81043..7e352db117da7fd7ae0fa5283357774f79bb33fc 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -199,7 +199,7 @@ QList<Symbol *> LookupContext::lookup(const Name *name, Scope *scope) const
                     if (Namespace *enclosingNamespace = u->enclosingNamespaceScope()->owner()->asNamespace()) {
                         if (ClassOrNamespace *b = bindings()->lookupType(enclosingNamespace)) {
                             if (ClassOrNamespace *uu = b->lookupType(u->name())) {
-                                candidates = uu->lookup(name);
+                                candidates = uu->find(name);
 
                                 if (! candidates.isEmpty())
                                     return candidates;
@@ -221,7 +221,7 @@ QList<Symbol *> LookupContext::lookup(const Name *name, Scope *scope) const
 
             if (fun->name() && fun->name()->isQualifiedNameId()) {
                 if (ClassOrNamespace *binding = bindings()->lookupType(fun)) {
-                    candidates = binding->lookup(name);
+                    candidates = binding->find(name);
 
                     if (! candidates.isEmpty())
                         return candidates;
@@ -247,17 +247,25 @@ QList<Symbol *> LookupContext::lookup(const Name *name, Scope *scope) const
                 break; // it's an argument or a template parameter.
 
             if (ClassOrNamespace *binding = bindings()->lookupType(klass)) {
-                candidates = binding->lookup(name);
+                candidates = binding->find(name);
 
                 if (! candidates.isEmpty())
                     return candidates;
             }
 
-        } else if (scope->isNamespaceScope() || scope->isObjCClassScope() || scope->isObjCProtocolScope()) {
+        } else if (scope->isNamespaceScope()) {
             if (ClassOrNamespace *binding = bindings()->lookupType(scope->owner()))
-                return binding->lookup(name);
+                candidates = binding->find(name);
 
-            break;
+                if (! candidates.isEmpty())
+                    return candidates;
+
+        } else if (scope->isObjCClassScope() || scope->isObjCProtocolScope()) {
+            if (ClassOrNamespace *binding = bindings()->lookupType(scope->owner()))
+                candidates = binding->find(name);
+
+                if (! candidates.isEmpty())
+                    return candidates;
         }
     }