diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index f5e6015947443a6e3ede1ea515dbbbca5c35f0ba..29016a0d0a9c47031227ffc437746bb498c74543 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -63,9 +63,11 @@ static void fullyQualifiedName_helper(Symbol *symbol, QList<const Name *> *names
 
             } else if (symbol->name()->isNameId() || symbol->name()->isTemplateNameId()) {
                 names->append(symbol->name());
-
             }
-
+        } else if (symbol->isObjCClass() || symbol->isObjCBaseClass() || symbol->isObjCProtocol()
+                || symbol->isObjCForwardClassDeclaration() || symbol->isObjCForwardProtocolDeclaration()) {
+            if (symbol->name())
+                names->append(symbol->name());
         } else if (symbol->isFunction()) {
             if (const QualifiedNameId *q = symbol->name()->asQualifiedNameId()) {
                 for (unsigned i = 0; i < q->nameCount() - 1; ++i)
@@ -73,7 +75,6 @@ static void fullyQualifiedName_helper(Symbol *symbol, QList<const Name *> *names
             }
         }
     }
-
 }
 
 bool ClassOrNamespace::CompareName::operator()(const Name *name, const Name *other) const
diff --git a/tests/auto/cplusplus/lookup/tst_lookup.cpp b/tests/auto/cplusplus/lookup/tst_lookup.cpp
index d65fbf636debd7fb38fdd975a496cf9c8e4f6ed3..fdf432704e39990f1806214682eb9bb2dac0acb6 100644
--- a/tests/auto/cplusplus/lookup/tst_lookup.cpp
+++ b/tests/auto/cplusplus/lookup/tst_lookup.cpp
@@ -144,10 +144,15 @@ void tst_Lookup::simple_class_1()
     QVERIFY(!impl->isInterface());
     QCOMPARE(impl->memberCount(), 3U);
 
-    ObjCMethod *allocMethod = impl->memberAt(0)->asObjCMethod();
-    QVERIFY(allocMethod);
-    QVERIFY(allocMethod->name() && allocMethod->name()->identifier());
-    QCOMPARE(QLatin1String(allocMethod->name()->identifier()->chars()), QLatin1String("alloc"));
+    Declaration *allocMethodIface = iface->memberAt(0)->asDeclaration();
+    QVERIFY(allocMethodIface);
+    QVERIFY(allocMethodIface->name() && allocMethodIface->name()->identifier());
+    QCOMPARE(QLatin1String(allocMethodIface->name()->identifier()->chars()), QLatin1String("alloc"));
+
+    ObjCMethod *allocMethodImpl = impl->memberAt(0)->asObjCMethod();
+    QVERIFY(allocMethodImpl);
+    QVERIFY(allocMethodImpl->name() && allocMethodImpl->name()->identifier());
+    QCOMPARE(QLatin1String(allocMethodImpl->name()->identifier()->chars()), QLatin1String("alloc"));
 
     ObjCMethod *deallocMethod = impl->memberAt(2)->asObjCMethod();
     QVERIFY(deallocMethod);
@@ -164,12 +169,12 @@ void tst_Lookup::simple_class_1()
     QVERIFY(klass->symbols().contains(impl));
 
     // check method resolving:
-    QList<Symbol *> results = context.lookup(allocMethod->name(), impl->scope());
+    QList<Symbol *> results = context.lookup(allocMethodImpl->name(), impl->members());
     QCOMPARE(results.size(), 2);
-    QCOMPARE(results.at(0), allocMethod);
-    QCOMPARE(results.at(1), allocMethod);
+    QCOMPARE(results.at(0), allocMethodIface);
+    QCOMPARE(results.at(1), allocMethodImpl);
 
-    results = context.lookup(deallocMethod->name(), impl->scope());
+    results = context.lookup(deallocMethod->name(), impl->members());
     QCOMPARE(results.size(), 1);
     QCOMPARE(results.at(0), deallocMethod);
 }
@@ -225,11 +230,11 @@ void tst_Lookup::class_with_baseclass()
     QVERIFY(objClass != 0);
     QVERIFY(objClass->symbols().contains(baseZoo));
 
-    QList<Symbol *> results = context.lookup(baseDecl->name(), zooImpl->scope());
+    QList<Symbol *> results = context.lookup(baseDecl->name(), zooImpl->members());
     QCOMPARE(results.size(), 1);
     QCOMPARE(results.at(0), baseDecl);
 
-    results = context.lookup(baseMethod->name(), zooImpl->scope());
+    results = context.lookup(baseMethod->name(), zooImpl->members());
     QCOMPARE(results.size(), 1);
     QCOMPARE(results.at(0), baseMethod);
 }
@@ -285,7 +290,7 @@ void tst_Lookup::class_with_protocol_with_protocol()
         QVERIFY(candidates.contains(P1));
     }
 
-    QList<Symbol *> results = context.lookup(p1method->name(), zooImpl->scope());
+    QList<Symbol *> results = context.lookup(p1method->name(), zooImpl->members());
     QCOMPARE(results.size(), 1);
     QCOMPARE(results.at(0), p1method);
 }