From 64e9f652e07883c8c9c081a4b179bbbd6444b67f Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Thu, 27 May 2010 16:33:18 +0200
Subject: [PATCH] Handle using declarations

---
 src/libs/cplusplus/LookupContext.cpp | 15 +++++++++++++++
 src/libs/cplusplus/LookupContext.h   |  1 +
 2 files changed, 16 insertions(+)

diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index 5f883feab9d..1a510b6bd2d 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -794,6 +794,21 @@ bool CreateBindings::visit(BaseClass *b)
     return false;
 }
 
+bool CreateBindings::visit(UsingDeclaration *u)
+{
+    if (u->name()) {
+        if (const QualifiedNameId *q = u->name()->asQualifiedNameId()) {
+            if (const NameId *unqualifiedId = q->unqualifiedNameId()->asNameId()) {
+                if (ClassOrNamespace *delegate = _currentClassOrNamespace->lookupType(q)) {
+                    ClassOrNamespace *b = _currentClassOrNamespace->findOrCreateType(unqualifiedId);
+                    b->addUsing(delegate);
+                }
+            }
+        }
+    }
+    return false;
+}
+
 bool CreateBindings::visit(UsingNamespaceDirective *u)
 {
     if (ClassOrNamespace *e = _currentClassOrNamespace->lookupType(u->name())) {
diff --git a/src/libs/cplusplus/LookupContext.h b/src/libs/cplusplus/LookupContext.h
index 060d7ab0066..195fea8275f 100644
--- a/src/libs/cplusplus/LookupContext.h
+++ b/src/libs/cplusplus/LookupContext.h
@@ -170,6 +170,7 @@ protected:
     virtual bool visit(Function *);
     virtual bool visit(BaseClass *b);
     virtual bool visit(UsingNamespaceDirective *u);
+    virtual bool visit(UsingDeclaration *u);
     virtual bool visit(NamespaceAlias *a);
 
     virtual bool visit(ObjCClass *klass);
-- 
GitLab