Improve code completion in failure cases in two ways:
  1) Suppress diagnostics as soon as we form the code-completion
  token, so we don't get any error/warning spew from the early
  end-of-file.
  2) If we consume a code-completion token when we weren't expecting
  one, go into a code-completion recovery path that produces the best
  results it can based on the context that the parser is in.

llvm-svn: 104585
diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp
index ea364ee..98c0058 100644
--- a/clang/lib/Parse/ParseStmt.cpp
+++ b/clang/lib/Parse/ParseStmt.cpp
@@ -283,7 +283,7 @@
 
     if (Tok.is(tok::code_completion)) {
       Actions.CodeCompleteCase(CurScope);
-      ConsumeToken();
+      ConsumeCodeCompletionToken();
     }
     
     /// We don't want to treat 'case x : y' as a potential typo for 'case x::y'.
@@ -1000,7 +1000,7 @@
     Actions.CodeCompleteOrdinaryName(CurScope, 
                                      C99orCXXorObjC? Action::CCC_ForInit
                                                    : Action::CCC_Expression);
-    ConsumeToken();
+    ConsumeCodeCompletionToken();
   }
   
   // Parse the first part of the for specifier.