diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index 2941489e01cb330f4e7809b4a9771db5a9fe5ee4..01d4e13b4ebfa099c9caa5f03c30fba2cb3a65a1 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -162,8 +162,26 @@ QList<Symbol *> LookupContext::resolve(Name *name, const QList<Scope *> &visible
     if (QualifiedNameId *q = name->asQualifiedNameId()) {
         QList<Symbol *> candidates;
         QList<Scope *> scopes = visibleScopes;
-        Identifier *id = identifier(name);
+        for (unsigned i = 0; i < q->nameCount(); ++i) {
+            Name *name = q->nameAt(i);
 
+            if (i + 1 == q->nameCount())
+                candidates = resolve(name, scopes, mode);
+            else
+                candidates = resolveClassOrNamespace(name, scopes);
+
+            if (candidates.isEmpty() || i + 1 == q->nameCount())
+                break;
+
+            scopes.clear();
+            foreach (Symbol *candidate, candidates) {
+                if (ScopedSymbol *scoped = candidate->asScopedSymbol()) {
+                    expand(scoped->members(), visibleScopes, &scopes);
+                }
+            }
+        }
+
+        Identifier *id = identifier(name);
         foreach (Scope *scope, visibleScopes) {
             Symbol *symbol = scope->lookat(id);
             for (; symbol; symbol = symbol->next()) {
@@ -189,26 +207,7 @@ QList<Symbol *> LookupContext::resolve(Name *name, const QList<Scope *> &visible
             }
         }
 
-        for (unsigned i = 0; i < q->nameCount(); ++i) {
-            Name *name = q->nameAt(i);
-
-            if (i + 1 == q->nameCount())
-                candidates += resolve(name, scopes, mode);
-            else
-                candidates += resolveClassOrNamespace(name, scopes);
-
-            if (candidates.isEmpty() || i + 1 == q->nameCount())
-                return candidates;
-
-            scopes.clear();
-            foreach (Symbol *candidate, candidates) {
-                if (ScopedSymbol *scoped = candidate->asScopedSymbol()) {
-                    expand(scoped->members(), visibleScopes, &scopes);
-                }
-            }
-        }
-
-        return QList<Symbol *>();
+        return candidates;
     }
 
     QList<Symbol *> candidates;