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