Author: Vlad Serebrennikov
Date: 2025-04-30T06:48:37+03:00
New Revision: 4075a3698a3fdda3a77ce2456e3bfefbc0f0c56e

URL: 
https://github.com/llvm/llvm-project/commit/4075a3698a3fdda3a77ce2456e3bfefbc0f0c56e
DIFF: 
https://github.com/llvm/llvm-project/commit/4075a3698a3fdda3a77ce2456e3bfefbc0f0c56e.diff

LOG: [clang][NFC] Convert `Parser::CastParseKind` to scoped enum

Added: 
    

Modified: 
    clang/include/clang/Parse/Parser.h
    clang/lib/Parse/ParseExpr.cpp
    clang/lib/Parse/ParseExprCXX.cpp
    clang/lib/Parse/ParseOpenMP.cpp

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Parse/Parser.h 
b/clang/include/clang/Parse/Parser.h
index 3a5e42e60fae8..5248cb2219d73 100644
--- a/clang/include/clang/Parse/Parser.h
+++ b/clang/include/clang/Parse/Parser.h
@@ -104,6 +104,9 @@ enum class ObjCTypeQual {
 /// TypeCastState - State whether an expression is or may be a type cast.
 enum class TypeCastState { NotTypeCast = 0, MaybeTypeCast, IsTypeCast };
 
+/// Control what ParseCastExpression will parse.
+enum class CastParseKind { AnyCastExpr = 0, UnaryExprOnly, PrimaryExprOnly };
+
 /// Parser - This implements a parser for the C family of languages.  After
 /// parsing units of the grammar, productions are invoked to handle whatever 
has
 /// been read.
@@ -1888,14 +1891,7 @@ class Parser : public CodeCompletionHandler {
 
   ExprResult ParseExpressionWithLeadingExtension(SourceLocation ExtLoc);
 
-  ExprResult ParseRHSOfBinaryExpression(ExprResult LHS,
-                                        prec::Level MinPrec);
-  /// Control what ParseCastExpression will parse.
-  enum CastParseKind {
-    AnyCastExpr = 0,
-    UnaryExprOnly,
-    PrimaryExprOnly
-  };
+  ExprResult ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec);
 
   bool isRevertibleTypeTrait(const IdentifierInfo *Id,
                              clang::tok::TokenKind *Kind = nullptr);

diff  --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp
index 2013386a1ea53..8c821ef0c95bf 100644
--- a/clang/lib/Parse/ParseExpr.cpp
+++ b/clang/lib/Parse/ParseExpr.cpp
@@ -157,7 +157,7 @@ Parser::ParseExpressionWithLeadingExtension(SourceLocation 
ExtLoc) {
     // Silence extension warnings in the sub-expression
     ExtensionRAIIObject O(Diags);
 
-    LHS = ParseCastExpression(AnyCastExpr);
+    LHS = ParseCastExpression(CastParseKind::AnyCastExpr);
   }
 
   if (!LHS.isInvalid())
@@ -181,9 +181,9 @@ ExprResult Parser::ParseAssignmentExpression(TypeCastState 
isTypeCast) {
   if (Tok.is(tok::kw_co_yield))
     return ParseCoyieldExpression();
 
-  ExprResult LHS = ParseCastExpression(AnyCastExpr,
-                                       /*isAddressOfOperand=*/false,
-                                       isTypeCast);
+  ExprResult LHS =
+      ParseCastExpression(CastParseKind::AnyCastExpr,
+                          /*isAddressOfOperand=*/false, isTypeCast);
   return ParseRHSOfBinaryExpression(LHS, prec::Assignment);
 }
 
@@ -195,8 +195,9 @@ ExprResult Parser::ParseConditionalExpression() {
     return ExprError();
   }
 
-  ExprResult LHS = ParseCastExpression(
-      AnyCastExpr, /*isAddressOfOperand=*/false, TypeCastState::NotTypeCast);
+  ExprResult LHS = ParseCastExpression(CastParseKind::AnyCastExpr,
+                                       /*isAddressOfOperand=*/false,
+                                       TypeCastState::NotTypeCast);
   return ParseRHSOfBinaryExpression(LHS, prec::Conditional);
 }
 
@@ -227,7 +228,8 @@ 
Parser::ParseConstantExpressionInExprEvalContext(TypeCastState isTypeCast) {
              Sema::ExpressionEvaluationContext::ConstantEvaluated &&
          "Call this function only if your ExpressionEvaluationContext is "
          "already ConstantEvaluated");
-  ExprResult LHS(ParseCastExpression(AnyCastExpr, false, isTypeCast));
+  ExprResult LHS(
+      ParseCastExpression(CastParseKind::AnyCastExpr, false, isTypeCast));
   ExprResult Res(ParseRHSOfBinaryExpression(LHS, prec::Conditional));
   return Actions.ActOnConstantExpression(Res);
 }
@@ -273,8 +275,8 @@ ExprResult Parser::ParseArrayBoundExpression() {
 ExprResult Parser::ParseCaseExpression(SourceLocation CaseLoc) {
   EnterExpressionEvaluationContext ConstantEvaluated(
       Actions, Sema::ExpressionEvaluationContext::ConstantEvaluated);
-  ExprResult LHS(
-      ParseCastExpression(AnyCastExpr, false, TypeCastState::NotTypeCast));
+  ExprResult LHS(ParseCastExpression(CastParseKind::AnyCastExpr, false,
+                                     TypeCastState::NotTypeCast));
   ExprResult Res(ParseRHSOfBinaryExpression(LHS, prec::Conditional));
   return Actions.ActOnCaseExpr(CaseLoc, Res);
 }
@@ -288,7 +290,7 @@ ExprResult Parser::ParseCaseExpression(SourceLocation 
CaseLoc) {
 ExprResult Parser::ParseConstraintExpression() {
   EnterExpressionEvaluationContext ConstantEvaluated(
       Actions, Sema::ExpressionEvaluationContext::Unevaluated);
-  ExprResult LHS(ParseCastExpression(AnyCastExpr));
+  ExprResult LHS(ParseCastExpression(CastParseKind::AnyCastExpr));
   ExprResult Res(ParseRHSOfBinaryExpression(LHS, prec::LogicalOr));
   if (Res.isUsable() && !Actions.CheckConstraintExpression(Res.get())) {
     Actions.CorrectDelayedTyposInExpr(Res);
@@ -313,7 +315,7 @@ Parser::ParseConstraintLogicalAndExpression(bool 
IsTrailingRequiresClause) {
   bool NotPrimaryExpression = false;
   auto ParsePrimary = [&]() {
     ExprResult E =
-        ParseCastExpression(PrimaryExprOnly,
+        ParseCastExpression(CastParseKind::PrimaryExprOnly,
                             /*isAddressOfOperand=*/false,
                             /*isTypeCast=*/TypeCastState::NotTypeCast,
                             /*isVectorLiteral=*/false, &NotPrimaryExpression);
@@ -592,7 +594,7 @@ Parser::ParseRHSOfBinaryExpression(ExprResult LHS, 
prec::Level MinPrec) {
     } else if (getLangOpts().CPlusPlus && NextTokPrec <= prec::Conditional)
       RHS = ParseAssignmentExpression();
     else
-      RHS = ParseCastExpression(AnyCastExpr);
+      RHS = ParseCastExpression(CastParseKind::AnyCastExpr);
 
     if (RHS.isInvalid()) {
       // FIXME: Errors generated by the delayed typo correction should be
@@ -1452,7 +1454,8 @@ ExprResult Parser::ParseCastExpression(CastParseKind 
ParseKind,
     // an ambiguous cast expression, such as "(T())++", then we recurse to
     // determine whether the '++' is prefix or postfix.
     Res = ParseCastExpression(
-        getLangOpts().CPlusPlus ? UnaryExprOnly : AnyCastExpr,
+        getLangOpts().CPlusPlus ? CastParseKind::UnaryExprOnly
+                                : CastParseKind::AnyCastExpr,
         /*isAddressOfOperand*/ false, NotCastExpr, TypeCastState::NotTypeCast);
     if (NotCastExpr) {
       // If we return with NotCastExpr = true, we must not consume any tokens,
@@ -1478,7 +1481,8 @@ ExprResult Parser::ParseCastExpression(CastParseKind 
ParseKind,
     SourceLocation SavedLoc = ConsumeToken();
     PreferredType.enterUnary(Actions, Tok.getLocation(), tok::amp, SavedLoc);
 
-    Res = ParseCastExpression(AnyCastExpr, /*isAddressOfOperand=*/true);
+    Res = ParseCastExpression(CastParseKind::AnyCastExpr,
+                              /*isAddressOfOperand=*/true);
     if (!Res.isInvalid()) {
       Expr *Arg = Res.get();
       Res = Actions.ActOnUnaryOp(getCurScope(), SavedLoc, SavedKind, Arg);
@@ -1500,7 +1504,7 @@ ExprResult Parser::ParseCastExpression(CastParseKind 
ParseKind,
       *NotPrimaryExpression = true;
     SourceLocation SavedLoc = ConsumeToken();
     PreferredType.enterUnary(Actions, Tok.getLocation(), SavedKind, SavedLoc);
-    Res = ParseCastExpression(AnyCastExpr);
+    Res = ParseCastExpression(CastParseKind::AnyCastExpr);
     if (!Res.isInvalid()) {
       Expr *Arg = Res.get();
       Res = Actions.ActOnUnaryOp(getCurScope(), SavedLoc, SavedKind, Arg,
@@ -1515,7 +1519,7 @@ ExprResult Parser::ParseCastExpression(CastParseKind 
ParseKind,
     if (NotPrimaryExpression)
       *NotPrimaryExpression = true;
     SourceLocation CoawaitLoc = ConsumeToken();
-    Res = ParseCastExpression(AnyCastExpr);
+    Res = ParseCastExpression(CastParseKind::AnyCastExpr);
     if (!Res.isInvalid())
       Res = Actions.ActOnCoawaitExpr(getCurScope(), CoawaitLoc, Res.get());
     return Res;
@@ -1527,7 +1531,7 @@ ExprResult Parser::ParseCastExpression(CastParseKind 
ParseKind,
       *NotPrimaryExpression = true;
     ExtensionRAIIObject O(Diags);  // Use RAII to do this.
     SourceLocation SavedLoc = ConsumeToken();
-    Res = ParseCastExpression(AnyCastExpr);
+    Res = ParseCastExpression(CastParseKind::AnyCastExpr);
     if (!Res.isInvalid())
       Res = Actions.ActOnUnaryOp(getCurScope(), SavedLoc, SavedKind, 
Res.get());
     return Res;
@@ -1921,7 +1925,7 @@ ExprResult Parser::ParseCastExpression(CastParseKind 
ParseKind,
   // are compiling for OpenCL, we need to return an error as this implies
   // that the address of the function is being taken, which is illegal in CL.
 
-  if (ParseKind == PrimaryExprOnly)
+  if (ParseKind == CastParseKind::PrimaryExprOnly)
     // This is strictly a primary-expression - no postfix-expr pieces should be
     // parsed.
     return Res;
@@ -2515,10 +2519,10 @@ Parser::ParseExprAfterUnaryExprOrTypeTrait(const Token 
&OpTok,
         Tok.isOneOf(tok::kw_sizeof, tok::kw___datasizeof, tok::kw___alignof,
                     tok::kw_alignof, tok::kw__Alignof, tok::kw__Countof))
       Actions.runWithSufficientStackSpace(Tok.getLocation(), [&] {
-        Operand = ParseCastExpression(UnaryExprOnly);
+        Operand = ParseCastExpression(CastParseKind::UnaryExprOnly);
       });
     else
-      Operand = ParseCastExpression(UnaryExprOnly);
+      Operand = ParseCastExpression(CastParseKind::UnaryExprOnly);
   } else {
     // If it starts with a '(', we know that it is either a parenthesized
     // type-name, or it is a unary-expression that starts with a compound
@@ -3177,7 +3181,7 @@ Parser::ParseParenExpression(ParenParseOption &ExprType, 
bool stopIfCastExpr,
     RParenLoc = T.getCloseLocation();
 
     PreferredType.enterTypeCast(Tok.getLocation(), Ty.get().get());
-    ExprResult SubExpr = ParseCastExpression(AnyCastExpr);
+    ExprResult SubExpr = ParseCastExpression(CastParseKind::AnyCastExpr);
 
     if (Ty.isInvalid() || SubExpr.isInvalid())
       return ExprError();
@@ -3259,11 +3263,11 @@ Parser::ParseParenExpression(ParenParseOption 
&ExprType, bool stopIfCastExpr,
             // Parse the cast-expression that follows it next.
             // isVectorLiteral = true will make sure we don't parse any
             // Postfix expression yet
-            Result =
-                ParseCastExpression(/*isUnaryExpression=*/AnyCastExpr,
-                                    /*isAddressOfOperand=*/false,
-                                    /*isTypeCast=*/TypeCastState::IsTypeCast,
-                                    /*isVectorLiteral=*/true);
+            Result = ParseCastExpression(
+                /*isUnaryExpression=*/CastParseKind::AnyCastExpr,
+                /*isAddressOfOperand=*/false,
+                /*isTypeCast=*/TypeCastState::IsTypeCast,
+                /*isVectorLiteral=*/true);
 
             if (!Result.isInvalid()) {
               Result = Actions.ActOnCastExpr(getCurScope(), OpenLoc,
@@ -3312,9 +3316,10 @@ Parser::ParseParenExpression(ParenParseOption &ExprType, 
bool stopIfCastExpr,
         PreferredType.enterTypeCast(Tok.getLocation(), CastTy.get());
         // Parse the cast-expression that follows it next.
         // TODO: For cast expression with CastTy.
-        Result = ParseCastExpression(/*isUnaryExpression=*/AnyCastExpr,
-                                     /*isAddressOfOperand=*/false,
-                                     /*isTypeCast=*/TypeCastState::IsTypeCast);
+        Result = ParseCastExpression(
+            /*isUnaryExpression=*/CastParseKind::AnyCastExpr,
+            /*isAddressOfOperand=*/false,
+            /*isTypeCast=*/TypeCastState::IsTypeCast);
         if (!Result.isInvalid()) {
           Result = Actions.ActOnCastExpr(getCurScope(), OpenLoc,
                                          DeclaratorInfo, CastTy,

diff  --git a/clang/lib/Parse/ParseExprCXX.cpp 
b/clang/lib/Parse/ParseExprCXX.cpp
index 400d5354fd7cc..a11af84274dc1 100644
--- a/clang/lib/Parse/ParseExprCXX.cpp
+++ b/clang/lib/Parse/ParseExprCXX.cpp
@@ -3597,7 +3597,7 @@ Parser::ParseCXXDeleteExpression(bool UseGlobal, 
SourceLocation Start) {
       return ExprError();
   }
 
-  ExprResult Operand(ParseCastExpression(AnyCastExpr));
+  ExprResult Operand(ParseCastExpression(CastParseKind::AnyCastExpr));
   if (Operand.isInvalid())
     return Operand;
 
@@ -4132,8 +4132,8 @@ Parser::ParseCXXAmbiguousParenExpression(ParenParseOption 
&ExprType,
       // If it is not a cast-expression, NotCastExpr will be true and no token
       // will be consumed.
       ColonProt.restore();
-      Result = ParseCastExpression(AnyCastExpr, false /*isAddressofOperand*/,
-                                   NotCastExpr,
+      Result = ParseCastExpression(CastParseKind::AnyCastExpr,
+                                   false /*isAddressofOperand*/, NotCastExpr,
                                    // type-id has priority.
                                    TypeCastState::IsTypeCast);
     }

diff  --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp
index 72e808f5fac9a..6fe2137435cd3 100644
--- a/clang/lib/Parse/ParseOpenMP.cpp
+++ b/clang/lib/Parse/ParseOpenMP.cpp
@@ -3552,7 +3552,8 @@ ExprResult Parser::ParseOpenMPParensExpr(StringRef 
ClauseName,
     return ExprError();
 
   SourceLocation ELoc = Tok.getLocation();
-  ExprResult LHS(ParseCastExpression(AnyCastExpr, IsAddressOfOperand,
+  ExprResult LHS(ParseCastExpression(CastParseKind::AnyCastExpr,
+                                     IsAddressOfOperand,
                                      TypeCastState::NotTypeCast));
   ExprResult Val(ParseRHSOfBinaryExpression(LHS, prec::Conditional));
   Val = Actions.ActOnFinishFullExpr(Val.get(), ELoc, /*DiscardedValue*/ false);
@@ -3704,7 +3705,7 @@ bool Parser::ParseOMPInteropInfo(OMPInteropInfo 
&InteropInfo,
 
       while (Tok.isNot(tok::r_paren)) {
         SourceLocation Loc = Tok.getLocation();
-        ExprResult LHS = ParseCastExpression(AnyCastExpr);
+        ExprResult LHS = ParseCastExpression(CastParseKind::AnyCastExpr);
         ExprResult PTExpr = Actions.CorrectDelayedTyposInExpr(
             ParseRHSOfBinaryExpression(LHS, prec::Conditional));
         PTExpr = Actions.ActOnFinishFullExpr(PTExpr.get(), Loc,
@@ -4188,8 +4189,8 @@ OMPClause 
*Parser::ParseOpenMPSingleExprWithArgClause(OpenMPDirectiveKind DKind,
                           Kind == OMPC_grainsize || Kind == OMPC_num_tasks;
   if (NeedAnExpression) {
     SourceLocation ELoc = Tok.getLocation();
-    ExprResult LHS(
-        ParseCastExpression(AnyCastExpr, false, TypeCastState::NotTypeCast));
+    ExprResult LHS(ParseCastExpression(CastParseKind::AnyCastExpr, false,
+                                       TypeCastState::NotTypeCast));
     Val = ParseRHSOfBinaryExpression(LHS, prec::Conditional);
     Val =
         Actions.ActOnFinishFullExpr(Val.get(), ELoc, /*DiscardedValue*/ false);
@@ -4480,7 +4481,7 @@ ExprResult Parser::ParseOpenMPIteratorsExpr() {
     ColonProtectionRAIIObject ColonRAII(*this);
     // Parse <begin>
     SourceLocation Loc = Tok.getLocation();
-    ExprResult LHS = ParseCastExpression(AnyCastExpr);
+    ExprResult LHS = ParseCastExpression(CastParseKind::AnyCastExpr);
     ExprResult Begin = Actions.CorrectDelayedTyposInExpr(
         ParseRHSOfBinaryExpression(LHS, prec::Conditional));
     Begin = Actions.ActOnFinishFullExpr(Begin.get(), Loc,
@@ -4492,7 +4493,7 @@ ExprResult Parser::ParseOpenMPIteratorsExpr() {
 
     // Parse <end>
     Loc = Tok.getLocation();
-    LHS = ParseCastExpression(AnyCastExpr);
+    LHS = ParseCastExpression(CastParseKind::AnyCastExpr);
     ExprResult End = Actions.CorrectDelayedTyposInExpr(
         ParseRHSOfBinaryExpression(LHS, prec::Conditional));
     End = Actions.ActOnFinishFullExpr(End.get(), Loc,
@@ -4506,7 +4507,7 @@ ExprResult Parser::ParseOpenMPIteratorsExpr() {
       SecColonLoc = ConsumeToken();
       // Parse <step>
       Loc = Tok.getLocation();
-      LHS = ParseCastExpression(AnyCastExpr);
+      LHS = ParseCastExpression(CastParseKind::AnyCastExpr);
       Step = Actions.CorrectDelayedTyposInExpr(
           ParseRHSOfBinaryExpression(LHS, prec::Conditional));
       Step = Actions.ActOnFinishFullExpr(Step.get(), Loc,


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to