[clang] 5f22b84 - [clang][NFC] Convert `Parser::IfExistsBehavior` to scoped enum
Vlad Serebrennikov via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 29 21:08:54 PDT 2025
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;
}
More information about the cfe-commits
mailing list