]> granicus.if.org Git - clang/commitdiff
Parse: Move simple-type-specifier sanity check earlier
authorDavid Majnemer <david.majnemer@gmail.com>
Sun, 22 Sep 2013 03:30:01 +0000 (03:30 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Sun, 22 Sep 2013 03:30:01 +0000 (03:30 +0000)
No functional change, just makes the error handling a bit more obvious.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191162 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Parse/ParseExpr.cpp

index 9719d857f39e1317d9388c73ca6c9da773a0a425..847b074d5c81c8adb570f9c2b574d312a6aa158b 100644 (file)
@@ -1043,6 +1043,11 @@ ExprResult Parser::ParseCastExpression(bool isUnaryExpression,
       //                     typename-specifier braced-init-list
       if (TryAnnotateTypeOrScopeToken())
         return ExprError();
+
+      if (!Actions.isSimpleTypeSpecifier(Tok.getKind()))
+        // We are trying to parse a simple-type-specifier but might not get such
+        // a token after error recovery.
+        return ExprError();
     }
 
     // postfix-expression: simple-type-specifier '(' expression-list[opt] ')'
@@ -1050,10 +1055,6 @@ ExprResult Parser::ParseCastExpression(bool isUnaryExpression,
     //
     DeclSpec DS(AttrFactory);
 
-    if (!Actions.isSimpleTypeSpecifier(Tok.getKind()))
-      // This can happen if we tried to recover from errors earlier.
-      return ExprError();
-
     ParseCXXSimpleTypeSpecifier(DS);
     if (Tok.isNot(tok::l_paren) &&
         (!getLangOpts().CPlusPlus11 || Tok.isNot(tok::l_brace)))