Replace a parser assertion with a warning, suggestion by Doug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110568 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Parse/ParseCXXInlineMethods.cpp b/lib/Parse/ParseCXXInlineMethods.cpp
index 9f12ab5..8496ddd 100644
--- a/lib/Parse/ParseCXXInlineMethods.cpp
+++ b/lib/Parse/ParseCXXInlineMethods.cpp
@@ -143,9 +143,14 @@
         if (DefArgResult.isInvalid())
           Actions.ActOnParamDefaultArgumentError(LM.DefaultArgs[I].Param);
         else {
-          assert(Tok.is(tok::cxx_defaultarg_end) &&
-                 "We didn't parse the whole default arg!");
-          ConsumeToken(); // Consume tok::cxx_defaultarg_end.
+          if (Tok.is(tok::cxx_defaultarg_end))
+            ConsumeToken();
+          else {
+            // Warn that there are tokens from the default arg that we left
+            // unparsed. This actually indicates a bug in clang but we avoid
+            // asserting because we want the parser robust.
+            Diag(Tok.getLocation(), diag::warn_default_arg_unparsed);
+          }
           Actions.ActOnParamDefaultArgument(LM.DefaultArgs[I].Param, EqualLoc,
                                             move(DefArgResult));
         }