[clang] 7ecd81e - [clang][NFC] Convert `Parser::ExtraSemiKind` to scoped enum
Vlad Serebrennikov via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 29 16:31:37 PDT 2025
Author: Vlad Serebrennikov
Date: 2025-04-30T02:31:31+03:00
New Revision: 7ecd81e266174253786e084c100c22c65a214b5d
URL: https://github.com/llvm/llvm-project/commit/7ecd81e266174253786e084c100c22c65a214b5d
DIFF: https://github.com/llvm/llvm-project/commit/7ecd81e266174253786e084c100c22c65a214b5d.diff
LOG: [clang][NFC] Convert `Parser::ExtraSemiKind` to scoped enum
Added:
Modified:
clang/include/clang/Parse/Parser.h
clang/lib/Parse/ParseDecl.cpp
clang/lib/Parse/ParseDeclCXX.cpp
clang/lib/Parse/ParseObjc.cpp
clang/lib/Parse/Parser.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Parse/Parser.h b/clang/include/clang/Parse/Parser.h
index dbbb80fdd9943..491abae96160f 100644
--- a/clang/include/clang/Parse/Parser.h
+++ b/clang/include/clang/Parse/Parser.h
@@ -64,6 +64,14 @@ enum class AnnotatedNameKind {
Success
};
+/// The kind of extra semi diagnostic to emit.
+enum class ExtraSemiKind {
+ OutsideFunction = 0,
+ InsideStruct = 1,
+ InstanceVariableList = 2,
+ AfterMemberFunctionDefinition = 3
+};
+
/// 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.
@@ -1120,14 +1128,6 @@ class Parser : public CodeCompletionHandler {
/// to the semicolon, consumes that extra token.
bool ExpectAndConsumeSemi(unsigned DiagID , StringRef TokenUsed = "");
- /// The kind of extra semi diagnostic to emit.
- enum ExtraSemiKind {
- OutsideFunction = 0,
- InsideStruct = 1,
- InstanceVariableList = 2,
- AfterMemberFunctionDefinition = 3
- };
-
/// Consume any extra semi-colons until the end of the line.
void ConsumeExtraSemi(ExtraSemiKind Kind, DeclSpec::TST T = TST_unspecified);
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp
index 69d40baaf4298..7eb6bb97b6622 100644
--- a/clang/lib/Parse/ParseDecl.cpp
+++ b/clang/lib/Parse/ParseDecl.cpp
@@ -5187,7 +5187,7 @@ void Parser::ParseStructUnionBody(SourceLocation RecordLoc,
// Check for extraneous top-level semicolon.
if (Tok.is(tok::semi)) {
- ConsumeExtraSemi(InsideStruct, TagType);
+ ConsumeExtraSemi(ExtraSemiKind::InsideStruct, TagType);
continue;
}
diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp
index 51fe0663a8d1a..6deb9b73998ae 100644
--- a/clang/lib/Parse/ParseDeclCXX.cpp
+++ b/clang/lib/Parse/ParseDeclCXX.cpp
@@ -3295,7 +3295,7 @@ Parser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclaration(
// Consume the ';' - it's optional unless we have a delete or default
if (Tok.is(tok::semi))
- ConsumeExtraSemi(AfterMemberFunctionDefinition);
+ ConsumeExtraSemi(ExtraSemiKind::AfterMemberFunctionDefinition);
return DeclGroupPtrTy::make(DeclGroupRef(FunDecl));
}
@@ -3649,7 +3649,7 @@ Parser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclarationWithPragmas(
case tok::semi:
// Check for extraneous top-level semicolon.
- ConsumeExtraSemi(InsideStruct, TagType);
+ ConsumeExtraSemi(ExtraSemiKind::InsideStruct, TagType);
return nullptr;
// Handle pragmas that can appear as member declarations.
@@ -5313,7 +5313,7 @@ void Parser::ParseMicrosoftIfExistsClassDeclaration(
// Check for extraneous top-level semicolon.
if (Tok.is(tok::semi)) {
- ConsumeExtraSemi(InsideStruct, TagType);
+ ConsumeExtraSemi(ExtraSemiKind::InsideStruct, TagType);
continue;
}
diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp
index d872177b3d7aa..40bc459523e8d 100644
--- a/clang/lib/Parse/ParseObjc.cpp
+++ b/clang/lib/Parse/ParseObjc.cpp
@@ -1972,7 +1972,7 @@ void Parser::ParseObjCClassInstanceVariables(ObjCContainerDecl *interfaceDecl,
// Check for extraneous top-level semicolon.
if (Tok.is(tok::semi)) {
- ConsumeExtraSemi(InstanceVariableList);
+ ConsumeExtraSemi(ExtraSemiKind::InstanceVariableList);
continue;
}
diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp
index 0954c31519c5a..c45ed4182997b 100644
--- a/clang/lib/Parse/Parser.cpp
+++ b/clang/lib/Parse/Parser.cpp
@@ -24,6 +24,7 @@
#include "clang/Sema/ParsedTemplate.h"
#include "clang/Sema/Scope.h"
#include "clang/Sema/SemaCodeCompletion.h"
+#include "llvm/ADT/STLForwardCompat.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/TimeProfiler.h"
using namespace clang;
@@ -213,7 +214,7 @@ void Parser::ConsumeExtraSemi(ExtraSemiKind Kind, DeclSpec::TST TST) {
// C++11 allows extra semicolons at namespace scope, but not in any of the
// other contexts.
- if (Kind == OutsideFunction && getLangOpts().CPlusPlus) {
+ if (Kind == ExtraSemiKind::OutsideFunction && getLangOpts().CPlusPlus) {
if (getLangOpts().CPlusPlus11)
Diag(StartLoc, diag::warn_cxx98_compat_top_level_semi)
<< FixItHint::CreateRemoval(SourceRange(StartLoc, EndLoc));
@@ -223,10 +224,11 @@ void Parser::ConsumeExtraSemi(ExtraSemiKind Kind, DeclSpec::TST TST) {
return;
}
- if (Kind != AfterMemberFunctionDefinition || HadMultipleSemis)
+ if (Kind != ExtraSemiKind::AfterMemberFunctionDefinition || HadMultipleSemis)
Diag(StartLoc, diag::ext_extra_semi)
- << Kind << DeclSpec::getSpecifierName(TST,
- Actions.getASTContext().getPrintingPolicy())
+ << llvm::to_underlying(Kind)
+ << DeclSpec::getSpecifierName(
+ TST, Actions.getASTContext().getPrintingPolicy())
<< FixItHint::CreateRemoval(SourceRange(StartLoc, EndLoc));
else
// A single semicolon is valid after a member function definition.
@@ -902,7 +904,7 @@ Parser::ParseExternalDeclaration(ParsedAttributes &Attrs,
// Either a C++11 empty-declaration or attribute-declaration.
SingleDecl =
Actions.ActOnEmptyDeclaration(getCurScope(), Attrs, Tok.getLocation());
- ConsumeExtraSemi(OutsideFunction);
+ ConsumeExtraSemi(ExtraSemiKind::OutsideFunction);
break;
case tok::r_brace:
Diag(Tok, diag::err_extraneous_closing_brace);
More information about the cfe-commits
mailing list