Author: Vlad Serebrennikov Date: 2025-04-30T07:08:47+03:00 New Revision: 5f22b84b653e9b76a21ea4ea2ae864173242f237
URL: https://github.com/llvm/llvm-project/commit/5f22b84b653e9b76a21ea4ea2ae864173242f237 DIFF: https://github.com/llvm/llvm-project/commit/5f22b84b653e9b76a21ea4ea2ae864173242f237.diff LOG: [clang][NFC] Convert `Parser::IfExistsBehavior` to scoped enum Added: Modified: clang/include/clang/Parse/Parser.h clang/lib/Parse/ParseDeclCXX.cpp clang/lib/Parse/ParseInit.cpp clang/lib/Parse/ParseStmt.cpp clang/lib/Parse/Parser.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Parse/Parser.h b/clang/include/clang/Parse/Parser.h index 01862e4534664..5b68447274c70 100644 --- a/clang/include/clang/Parse/Parser.h +++ b/clang/include/clang/Parse/Parser.h @@ -116,6 +116,18 @@ enum class ParenParseOption { CastExpr // Also allow '(' type-name ')' <anything> }; +/// Describes the behavior that should be taken for an __if_exists +/// block. +enum class IfExistsBehavior { + /// Parse the block; this code is always used. + Parse, + /// Skip the block entirely; this code is never used. + Skip, + /// Parse the block as a dependent block, which may be used in + /// some template instantiations but not others. + Dependent +}; + /// 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. @@ -2225,18 +2237,6 @@ class Parser : public CodeCompletionHandler { SourceLocation *TrailingElseLoc, ParsedAttributes &Attrs); - /// Describes the behavior that should be taken for an __if_exists - /// block. - enum IfExistsBehavior { - /// Parse the block; this code is always used. - IEB_Parse, - /// Skip the block entirely; this code is never used. - IEB_Skip, - /// Parse the block as a dependent block, which may be used in - /// some template instantiations but not others. - IEB_Dependent - }; - /// Describes the condition of a Microsoft __if_exists or /// __if_not_exists block. struct IfExistsCondition { diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index 662d5e1e031ec..9308c4ade3da6 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -5289,17 +5289,17 @@ void Parser::ParseMicrosoftIfExistsClassDeclaration( } switch (Result.Behavior) { - case IEB_Parse: + case IfExistsBehavior::Parse: // Parse the declarations below. break; - case IEB_Dependent: + case IfExistsBehavior::Dependent: Diag(Result.KeywordLoc, diag::warn_microsoft_dependent_exists) << Result.IsIfExists; // Fall through to skip. [[fallthrough]]; - case IEB_Skip: + case IfExistsBehavior::Skip: Braces.skipToEnd(); return; } diff --git a/clang/lib/Parse/ParseInit.cpp b/clang/lib/Parse/ParseInit.cpp index 86696329ea02e..a4ac692f429f7 100644 --- a/clang/lib/Parse/ParseInit.cpp +++ b/clang/lib/Parse/ParseInit.cpp @@ -595,17 +595,17 @@ bool Parser::ParseMicrosoftIfExistsBraceInitializer(ExprVector &InitExprs, } switch (Result.Behavior) { - case IEB_Parse: + case IfExistsBehavior::Parse: // Parse the declarations below. break; - case IEB_Dependent: + case IfExistsBehavior::Dependent: Diag(Result.KeywordLoc, diag::warn_microsoft_dependent_exists) << Result.IsIfExists; // Fall through to skip. [[fallthrough]]; - case IEB_Skip: + case IfExistsBehavior::Skip: Braces.skipToEnd(); return false; } diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp index f50a245621185..bdd02469a85bb 100644 --- a/clang/lib/Parse/ParseStmt.cpp +++ b/clang/lib/Parse/ParseStmt.cpp @@ -2825,7 +2825,7 @@ void Parser::ParseMicrosoftIfExistsStatement(StmtVector &Stmts) { // This is not the same behavior as Visual C++, which don't treat this as a // compound statement, but for Clang's type checking we can't have anything // inside these braces escaping to the surrounding code. - if (Result.Behavior == IEB_Dependent) { + if (Result.Behavior == IfExistsBehavior::Dependent) { if (!Tok.is(tok::l_brace)) { Diag(Tok, diag::err_expected) << tok::l_brace; return; @@ -2852,14 +2852,14 @@ void Parser::ParseMicrosoftIfExistsStatement(StmtVector &Stmts) { } switch (Result.Behavior) { - case IEB_Parse: + case IfExistsBehavior::Parse: // Parse the statements below. break; - case IEB_Dependent: + case IfExistsBehavior::Dependent: llvm_unreachable("Dependent case handled above"); - case IEB_Skip: + case IfExistsBehavior::Skip: Braces.skipToEnd(); return; } diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp index 183181fd3bac7..a610e56760328 100644 --- a/clang/lib/Parse/Parser.cpp +++ b/clang/lib/Parse/Parser.cpp @@ -2435,15 +2435,17 @@ bool Parser::ParseMicrosoftIfExistsCondition(IfExistsCondition& Result) { Result.IsIfExists, Result.SS, Result.Name)) { case Sema::IER_Exists: - Result.Behavior = Result.IsIfExists ? IEB_Parse : IEB_Skip; + Result.Behavior = + Result.IsIfExists ? IfExistsBehavior::Parse : IfExistsBehavior::Skip; break; case Sema::IER_DoesNotExist: - Result.Behavior = !Result.IsIfExists ? IEB_Parse : IEB_Skip; + Result.Behavior = + !Result.IsIfExists ? IfExistsBehavior::Parse : IfExistsBehavior::Skip; break; case Sema::IER_Dependent: - Result.Behavior = IEB_Dependent; + Result.Behavior = IfExistsBehavior::Dependent; break; case Sema::IER_Error: @@ -2465,14 +2467,14 @@ void Parser::ParseMicrosoftIfExistsExternalDeclaration() { } switch (Result.Behavior) { - case IEB_Parse: + case IfExistsBehavior::Parse: // Parse declarations below. break; - case IEB_Dependent: + case IfExistsBehavior::Dependent: llvm_unreachable("Cannot have a dependent external declaration"); - case IEB_Skip: + case IfExistsBehavior::Skip: Braces.skipToEnd(); return; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits