From 70bdb3726d17ff5de4903b6fed8e21a0a8cdacbf Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Wed, 4 Nov 2009 17:38:17 +0100
Subject: [PATCH] Resolve fully qualified names.

---
 src/libs/cplusplus/CppBindings.cpp | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/libs/cplusplus/CppBindings.cpp b/src/libs/cplusplus/CppBindings.cpp
index acbeb6f6fd1..c916ab4b8b1 100644
--- a/src/libs/cplusplus/CppBindings.cpp
+++ b/src/libs/cplusplus/CppBindings.cpp
@@ -152,6 +152,25 @@ ClassBinding *NamespaceBinding::findClassBinding(Name *name, QSet<Binding *> *pr
     if (processed->contains(this))
         return 0;
 
+    if (const QualifiedNameId *q = name->asQualifiedNameId()) {
+        Binding *current = this;
+
+        for (unsigned i = 0; i < q->nameCount(); ++i) {
+            Identifier *nameId = q->nameAt(i)->identifier();
+            if (! nameId)
+                return 0;
+
+            QSet<Binding *> visited;
+            Binding *binding = current->findClassOrNamespaceBinding(nameId, &visited); // ### TODO: check recursion.
+            if (! binding)
+                return 0;
+
+            current = binding;
+        }
+
+        return current->asClassBinding();
+    }
+
     processed->insert(this);
 
     Identifier *id = name->identifier();
-- 
GitLab