From afedec330a9be2378009c5497bbb8b88efd4255d Mon Sep 17 00:00:00 2001
From: Roberto Raggi <roberto.raggi@nokia.com>
Date: Wed, 7 Oct 2009 14:33:37 +0200
Subject: [PATCH] Run the binder before searching strong and weak references.

---
 src/plugins/cpptools/cppfindreferences.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 26f9a18696b..40259589a27 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -49,6 +49,7 @@
 #include <Scope.h>
 
 #include <cplusplus/CppDocument.h>
+#include <cplusplus/CppBindings.h>
 #include <cplusplus/ExpressionUnderCursor.h>
 #include <cplusplus/ResolveExpression.h>
 #include <cplusplus/Overview.h>
@@ -81,6 +82,11 @@ public:
         _snapshot.insert(_doc);
     }
 
+    void setGlobalNamespaceBinding(NamespaceBindingPtr globalNamespaceBinding)
+    {
+        _globalNamespaceBinding = globalNamespaceBinding;
+    }
+
     QList<int> operator()(Symbol *symbol, Identifier *id, AST *ast)
     {
         _references.clear();
@@ -419,6 +425,7 @@ private:
     QByteArray _source;
     Document::Ptr _exprDoc;
     Semantic _sem;
+    NamespaceBindingPtr _globalNamespaceBinding;
     QList<PostfixExpressionAST *> _postfixExpressionStack;
     QList<QualifiedNameAST *> _qualifiedNameStack;
     QList<int> _references;
@@ -456,6 +463,7 @@ QList<int> CppFindReferences::references(Symbol *symbol,
     Q_ASSERT(translationUnit != 0);
 
     Process process(doc, snapshot, /*future = */ 0);
+    process.setGlobalNamespaceBinding(bind(doc, snapshot));
     references = process(symbol, id, translationUnit->ast());
 
     return references;
@@ -542,6 +550,7 @@ static void find_helper(QFutureInterface<Utils::FileSearchResult> &future,
             tm.start();
 
             Process process(doc, snapshot, &future);
+            process.setGlobalNamespaceBinding(bind(doc, snapshot));
 
             TranslationUnit *unit = doc->translationUnit();
             process(symbol, id, unit->ast());
-- 
GitLab