Move code completion for qualified name lookup (foo::) to
LookupVisibleDecls. Also, a function does not hide another function.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93421 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaCodeComplete.cpp b/lib/Sema/SemaCodeComplete.cpp
index c23648d..f7f5fe3 100644
--- a/lib/Sema/SemaCodeComplete.cpp
+++ b/lib/Sema/SemaCodeComplete.cpp
@@ -2354,7 +2354,8 @@
     return;
 
   ResultBuilder Results(*this);
-  CollectMemberLookupResults(Ctx, Ctx, Results);
+  CodeCompletionDeclConsumer Consumer(Results, CurContext);
+  LookupVisibleDecls(Ctx, LookupOrdinaryName, Consumer);
   
   // The "template" keyword can follow "::" in the grammar, but only
   // put it into the grammar if the nested-name-specifier is dependent.
diff --git a/lib/Sema/SemaLookup.cpp b/lib/Sema/SemaLookup.cpp
index 88da7e8..d7ee958 100644
--- a/lib/Sema/SemaLookup.cpp
+++ b/lib/Sema/SemaLookup.cpp
@@ -1942,6 +1942,12 @@
           (*I)->getIdentifierNamespace() != IDNS)
         continue;
 
+      // Functions and function templates overload rather than hide.
+      // FIXME: Look for hiding based on function signatures!
+      if ((*I)->isFunctionOrFunctionTemplate() &&
+          ND->isFunctionOrFunctionTemplate())
+        continue;
+          
       // We've found a declaration that hides this one.
       return *I;
     }