When combining the code-completion results from Sema long with the
code-completion results cached by ASTUnit, sort the resulting result
set. This makes testing far, far easier, so this commit also includes
tests for the previous few fixes.

llvm-svn: 112070
diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp
index 31e42a3..452803a 100644
--- a/clang/lib/Frontend/ASTUnit.cpp
+++ b/clang/lib/Frontend/ASTUnit.cpp
@@ -1552,8 +1552,10 @@
   case CodeCompletionContext::CCC_MacroName:
   case CodeCompletionContext::CCC_MacroNameUse:
   case CodeCompletionContext::CCC_PreprocessorExpression:
+  case CodeCompletionContext::CCC_PreprocessorDirective:
   case CodeCompletionContext::CCC_NaturalLanguage:
-    // If we're just looking for protocol or macro names, nothing can hide them.
+    // We're looking for nothing, or we're looking for names that cannot
+    // be hidden.
     return;
   }
   
@@ -1676,7 +1678,9 @@
     Next.ProcessCodeCompleteResults(S, Context, Results, NumResults);
     return;
   }
-  
+
+  // Sort the completion results before passing them on to the actual consumer.
+  std::stable_sort(AllResults.begin(), AllResults.end());
   Next.ProcessCodeCompleteResults(S, Context, AllResults.data(),
                                   AllResults.size());