Fix PR3031 by silencing follow-on errors in invalid declarations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59027 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 6c71d50..879a79b 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -753,9 +753,10 @@
   // All of these full declarators require an identifier.  If it doesn't have
   // one, the ParsedFreeStandingDeclSpec action should be used.
   if (II == 0) {
-    Diag(D.getDeclSpec().getSourceRange().getBegin(),
-         diag::err_declarator_need_ident,
-         D.getDeclSpec().getSourceRange(), D.getSourceRange());
+    if (!D.getInvalidType())  // Reject this if we think it is valid.
+      Diag(D.getDeclSpec().getSourceRange().getBegin(),
+           diag::err_declarator_need_ident,
+           D.getDeclSpec().getSourceRange(), D.getSourceRange());
     return 0;
   }