some minor cleanups to ParseObjCTypeName:

1. Remove a bogus assertion, clients other than sema can return a
   null pointer from actions that result in ParseTypeName returning null.
2. Remove dead RParenLoc variable.
3. Simplify control flow handling error conditions.
4. On a major failure, we should skip until ')' not until '}'.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57949 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp
index 8487ea2..f6d77cf 100644
--- a/lib/Parse/ParseObjc.cpp
+++ b/lib/Parse/ParseObjc.cpp
@@ -611,32 +611,27 @@
 Parser::TypeTy *Parser::ParseObjCTypeName(ObjCDeclSpec &DS) {
   assert(Tok.is(tok::l_paren) && "expected (");
   
-  SourceLocation LParenLoc = ConsumeParen(), RParenLoc;
+  SourceLocation LParenLoc = ConsumeParen();
   SourceLocation TypeStartLoc = Tok.getLocation();
-  TypeTy *Ty = 0;
   
   // Parse type qualifiers, in, inout, etc.
   ParseObjCTypeQualifierList(DS);
 
-  if (isTypeSpecifierQualifier()) {
+  TypeTy *Ty = 0;
+  if (isTypeSpecifierQualifier())
     Ty = ParseTypeName();
-    // FIXME: back when Sema support is in place...
-    // assert(Ty && "Parser::ParseObjCTypeName(): missing type");
-  }
   
-  if (Tok.isNot(tok::r_paren)) {
-    // If we didn't eat any tokens, then this isn't a type.
-    if (Tok.getLocation() == TypeStartLoc) {
-      Diag(Tok.getLocation(), diag::err_expected_type);
-      SkipUntil(tok::r_brace);
-    } else {
-      // Otherwise, we found *something*, but didn't get a ')' in the right
-      // place.  Emit an error then return what we have as the type.
-      MatchRHSPunctuation(tok::r_paren, LParenLoc);
-    }
-  }
   if (Tok.is(tok::r_paren))
-    RParenLoc = ConsumeParen();
+    ConsumeParen();
+  else if (Tok.getLocation() == TypeStartLoc) {
+    // If we didn't eat any tokens, then this isn't a type.
+    Diag(Tok.getLocation(), diag::err_expected_type);
+    SkipUntil(tok::r_paren);
+  } else {
+    // Otherwise, we found *something*, but didn't get a ')' in the right
+    // place.  Emit an error then return what we have as the type.
+    MatchRHSPunctuation(tok::r_paren, LParenLoc);
+  }
   return Ty;
 }