From: David Majnemer <david.majnemer@gmail.com> Date: Sun, 22 Sep 2013 03:30:01 +0000 (+0000) Subject: Parse: Move simple-type-specifier sanity check earlier X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=87d01cdda57f2bc4c1b3b4982b17908764ce0beb;p=clang Parse: Move simple-type-specifier sanity check earlier 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 --- diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp index 9719d857f3..847b074d5c 100644 --- a/lib/Parse/ParseExpr.cpp +++ b/lib/Parse/ParseExpr.cpp @@ -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)))