[clang-tools-extra] [clang-tidy][NFC] Prefer `static constexpr` over `static const` where possible (PR #173406)
Victor Chernyakin via cfe-commits
cfe-commits at lists.llvm.org
Tue Dec 23 11:46:17 PST 2025
https://github.com/localspook updated https://github.com/llvm/llvm-project/pull/173406
>From 000b23a498bc76d703d4820d38258eb4f7aca4fc Mon Sep 17 00:00:00 2001
From: Victor Chernyakin <chernyakin.victor.j at outlook.com>
Date: Tue, 23 Dec 2025 11:35:10 -0700
Subject: [PATCH 1/2] [clang-tidy][NFC] Prefer `static constexpr` over `static
const` where possible
---
.../clang-tidy/ClangTidyOptions.cpp | 12 ++--------
.../clang-tidy/ClangTidyOptions.h | 8 ++++---
.../abseil/StringFindStrContainsCheck.cpp | 9 ++++----
.../clang-tidy/boost/UseRangesCheck.cpp | 4 ++--
.../clang-tidy/modernize/LoopConvertCheck.cpp | 22 +++++++++----------
.../modernize/MakeSmartPtrCheck.cpp | 2 --
.../clang-tidy/modernize/MakeSmartPtrCheck.h | 2 +-
.../modernize/ReplaceAutoPtrCheck.cpp | 6 +++--
.../clang-tidy/modernize/UseAutoCheck.cpp | 8 +++----
.../clang-tidy/modernize/UseEmplaceCheck.cpp | 14 ++++++------
.../modernize/UseEqualsDefaultCheck.cpp | 2 +-
.../modernize/UseEqualsDeleteCheck.cpp | 4 ++--
.../clang-tidy/modernize/UseNullptrCheck.cpp | 2 +-
.../clang-tidy/modernize/UseRangesCheck.cpp | 6 ++---
.../modernize/UseTransparentFunctorsCheck.cpp | 2 +-
.../InefficientVectorOperationCheck.cpp | 22 +++++++++----------
.../AvoidReturnWithVoidValueCheck.cpp | 4 ++--
.../readability/ElseAfterReturnCheck.cpp | 9 ++++----
.../FunctionCognitiveComplexityCheck.cpp | 2 +-
.../SimplifySubscriptExprCheck.cpp | 2 +-
.../readability/StringCompareCheck.cpp | 14 +++++++-----
.../clang-tidy/utils/OptionsUtils.cpp | 2 +-
22 files changed, 78 insertions(+), 80 deletions(-)
diff --git a/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp b/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp
index 9aa679a9bf8d3..a6c3f2dfb053b 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp
@@ -157,7 +157,7 @@ template <> struct ScalarEnumerationTraits<clang::DiagnosticIDs::Level> {
};
template <> struct SequenceElementTraits<ClangTidyOptions::CustomCheckDiag> {
// NOLINTNEXTLINE(readability-identifier-naming) Defined by YAMLTraits.h
- static const bool flow = false;
+ static constexpr bool flow = false;
};
template <> struct MappingTraits<ClangTidyOptions::CustomCheckDiag> {
static void mapping(IO &IO, ClangTidyOptions::CustomCheckDiag &D) {
@@ -169,7 +169,7 @@ template <> struct MappingTraits<ClangTidyOptions::CustomCheckDiag> {
};
template <> struct SequenceElementTraits<ClangTidyOptions::CustomCheckValue> {
// NOLINTNEXTLINE(readability-identifier-naming) Defined by YAMLTraits.h
- static const bool flow = false;
+ static constexpr bool flow = false;
};
template <> struct MappingTraits<ClangTidyOptions::CustomCheckValue> {
static void mapping(IO &IO, ClangTidyOptions::CustomCheckValue &V) {
@@ -324,14 +324,6 @@ ClangTidyOptions ClangTidyOptions::merge(const ClangTidyOptions &Other,
return Result;
}
-const char ClangTidyOptionsProvider::OptionsSourceTypeDefaultBinary[] =
- "clang-tidy binary";
-const char ClangTidyOptionsProvider::OptionsSourceTypeCheckCommandLineOption[] =
- "command-line option '-checks'";
-const char
- ClangTidyOptionsProvider::OptionsSourceTypeConfigCommandLineOption[] =
- "command-line option '-config'";
-
ClangTidyOptions
ClangTidyOptionsProvider::getOptions(llvm::StringRef FileName) {
ClangTidyOptions Result;
diff --git a/clang-tools-extra/clang-tidy/ClangTidyOptions.h b/clang-tools-extra/clang-tidy/ClangTidyOptions.h
index 97daed448063b..23bbfb01c2ecd 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyOptions.h
+++ b/clang-tools-extra/clang-tidy/ClangTidyOptions.h
@@ -170,9 +170,11 @@ struct ClangTidyOptions {
/// Abstract interface for retrieving various ClangTidy options.
class ClangTidyOptionsProvider {
public:
- static const char OptionsSourceTypeDefaultBinary[];
- static const char OptionsSourceTypeCheckCommandLineOption[];
- static const char OptionsSourceTypeConfigCommandLineOption[];
+ static constexpr char OptionsSourceTypeDefaultBinary[] = "clang-tidy binary";
+ static constexpr char OptionsSourceTypeCheckCommandLineOption[] =
+ "command-line option '-checks'";
+ static constexpr char OptionsSourceTypeConfigCommandLineOption[] =
+ "command-line option '-config'";
virtual ~ClangTidyOptionsProvider() = default;
diff --git a/clang-tools-extra/clang-tidy/abseil/StringFindStrContainsCheck.cpp b/clang-tools-extra/clang-tidy/abseil/StringFindStrContainsCheck.cpp
index 6eb559717077b..5b31c002fce2b 100644
--- a/clang-tools-extra/clang-tidy/abseil/StringFindStrContainsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/abseil/StringFindStrContainsCheck.cpp
@@ -33,10 +33,11 @@ namespace {
AST_MATCHER(Type, isCharType) { return Node.isCharType(); }
} // namespace
-static const char DefaultStringLikeClasses[] = "::std::basic_string;"
- "::std::basic_string_view;"
- "::absl::string_view";
-static const char DefaultAbseilStringsMatchHeader[] = "absl/strings/match.h";
+static constexpr char DefaultStringLikeClasses[] = "::std::basic_string;"
+ "::std::basic_string_view;"
+ "::absl::string_view";
+static constexpr char DefaultAbseilStringsMatchHeader[] =
+ "absl/strings/match.h";
static transformer::RewriteRuleWith<std::string>
makeRewriteRule(ArrayRef<StringRef> StringLikeClassNames,
diff --git a/clang-tools-extra/clang-tidy/boost/UseRangesCheck.cpp b/clang-tools-extra/clang-tidy/boost/UseRangesCheck.cpp
index 970cbd93ee7c2..a72d8a3d4f390 100644
--- a/clang-tools-extra/clang-tidy/boost/UseRangesCheck.cpp
+++ b/clang-tools-extra/clang-tidy/boost/UseRangesCheck.cpp
@@ -348,7 +348,7 @@ DiagnosticBuilder UseRangesCheck::createDiag(const CallExpr &Call) {
}
ArrayRef<std::pair<StringRef, StringRef>>
UseRangesCheck::getFreeBeginEndMethods() const {
- static const std::pair<StringRef, StringRef> Refs[] = {
+ static constexpr std::pair<StringRef, StringRef> Refs[] = {
{"::std::begin", "::std::end"},
{"::std::cbegin", "::std::cend"},
{"::boost::range_adl_barrier::begin", "::boost::range_adl_barrier::end"},
@@ -359,7 +359,7 @@ UseRangesCheck::getFreeBeginEndMethods() const {
}
std::optional<UseRangesCheck::ReverseIteratorDescriptor>
UseRangesCheck::getReverseDescriptor() const {
- static const std::pair<StringRef, StringRef> Refs[] = {
+ static constexpr std::pair<StringRef, StringRef> Refs[] = {
{"::std::rbegin", "::std::rend"},
{"::std::crbegin", "::std::crend"},
{"::boost::rbegin", "::boost::rend"},
diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
index 7343557ccb722..2d63da2fef974 100644
--- a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
@@ -55,17 +55,17 @@ template <> struct OptionEnumMapping<modernize::VariableNamer::NamingStyle> {
namespace modernize {
-static const char LoopNameArray[] = "forLoopArray";
-static const char LoopNameIterator[] = "forLoopIterator";
-static const char LoopNameReverseIterator[] = "forLoopReverseIterator";
-static const char LoopNamePseudoArray[] = "forLoopPseudoArray";
-static const char ConditionBoundName[] = "conditionBound";
-static const char InitVarName[] = "initVar";
-static const char BeginCallName[] = "beginCall";
-static const char EndCallName[] = "endCall";
-static const char EndVarName[] = "endVar";
-static const char DerefByValueResultName[] = "derefByValueResult";
-static const char DerefByRefResultName[] = "derefByRefResult";
+static constexpr char LoopNameArray[] = "forLoopArray";
+static constexpr char LoopNameIterator[] = "forLoopIterator";
+static constexpr char LoopNameReverseIterator[] = "forLoopReverseIterator";
+static constexpr char LoopNamePseudoArray[] = "forLoopPseudoArray";
+static constexpr char ConditionBoundName[] = "conditionBound";
+static constexpr char InitVarName[] = "initVar";
+static constexpr char BeginCallName[] = "beginCall";
+static constexpr char EndCallName[] = "endCall";
+static constexpr char EndVarName[] = "endVar";
+static constexpr char DerefByValueResultName[] = "derefByValueResult";
+static constexpr char DerefByRefResultName[] = "derefByRefResult";
static const llvm::StringSet<> MemberNames{"begin", "cbegin", "rbegin",
"crbegin", "end", "cend",
"rend", "crend", "size"};
diff --git a/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp b/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp
index 94fb8b418a282..1fdb479b9a032 100644
--- a/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.cpp
@@ -33,8 +33,6 @@ static std::string getNewExprName(const CXXNewExpr *NewExpr,
return WrittenName.str();
}
-const char MakeSmartPtrCheck::PointerType[] = "pointerType";
-
MakeSmartPtrCheck::MakeSmartPtrCheck(StringRef Name, ClangTidyContext *Context,
StringRef MakeSmartPtrFunctionName)
: ClangTidyCheck(Name, Context),
diff --git a/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.h b/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.h
index 1d70f62d4be4e..e15ba34dcf3d3 100644
--- a/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/MakeSmartPtrCheck.h
@@ -41,7 +41,7 @@ class MakeSmartPtrCheck : public ClangTidyCheck {
/// Returns whether the C++ version is compatible with current check.
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override;
- static const char PointerType[];
+ static constexpr char PointerType[] = "pointerType";
private:
utils::IncludeInserter Inserter;
diff --git a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.cpp b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.cpp
index d0577aeccd2f1..6af05b11bb395 100644
--- a/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/ReplaceAutoPtrCheck.cpp
@@ -18,9 +18,11 @@ using namespace clang::ast_matchers;
namespace clang::tidy::modernize {
+static constexpr char AutoPtrTokenId[] = "AutoPrTokenId";
+static constexpr char AutoPtrOwnershipTransferId[] =
+ "AutoPtrOwnershipTransferId";
+
namespace {
-static const char AutoPtrTokenId[] = "AutoPrTokenId";
-static const char AutoPtrOwnershipTransferId[] = "AutoPtrOwnershipTransferId";
/// Matches expressions that are lvalues.
///
diff --git a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.cpp
index 977ade12e2c3a..1666987411790 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseAutoCheck.cpp
@@ -21,10 +21,10 @@ using namespace clang::ast_matchers::internal;
namespace clang::tidy::modernize {
-static const char IteratorDeclStmtId[] = "iterator_decl";
-static const char DeclWithNewId[] = "decl_new";
-static const char DeclWithCastId[] = "decl_cast";
-static const char DeclWithTemplateCastId[] = "decl_template";
+static constexpr char IteratorDeclStmtId[] = "iterator_decl";
+static constexpr char DeclWithNewId[] = "decl_new";
+static constexpr char DeclWithCastId[] = "decl_cast";
+static constexpr char DeclWithTemplateCastId[] = "decl_template";
static size_t getTypeNameLength(bool RemoveStars, StringRef Text) {
enum CharType { Space, Alpha, Punctuation };
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp
index 10ca3c14d066c..c37f23665b68a 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp
@@ -100,18 +100,18 @@ cxxMemberCallExprOnContainer(StringRef MethodName,
on(hasTypeOrPointeeType(hasWantedType(ContainerNames))));
}
-static const auto DefaultContainersWithPushBack =
+static constexpr char DefaultContainersWithPushBack[] =
"::std::vector; ::std::list; ::std::deque";
-static const auto DefaultContainersWithPush =
+static constexpr char DefaultContainersWithPush[] =
"::std::stack; ::std::queue; ::std::priority_queue";
-static const auto DefaultContainersWithPushFront =
+static constexpr char DefaultContainersWithPushFront[] =
"::std::forward_list; ::std::list; ::std::deque";
-static const auto DefaultSmartPointers =
+static constexpr char DefaultSmartPointers[] =
"::std::shared_ptr; ::std::unique_ptr; ::std::auto_ptr; ::std::weak_ptr";
-static const auto DefaultTupleTypes = "::std::pair; ::std::tuple";
-static const auto DefaultTupleMakeFunctions =
+static constexpr char DefaultTupleTypes[] = "::std::pair; ::std::tuple";
+static constexpr char DefaultTupleMakeFunctions[] =
"::std::make_pair; ::std::make_tuple";
-static const auto DefaultEmplacyFunctions =
+static constexpr char DefaultEmplacyFunctions[] =
"vector::emplace_back; vector::emplace;"
"deque::emplace; deque::emplace_front; deque::emplace_back;"
"forward_list::emplace_after; forward_list::emplace_front;"
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
index fde9c7323ce3c..bc450ad4a1f2b 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
@@ -18,7 +18,7 @@ using namespace clang::ast_matchers;
namespace clang::tidy::modernize {
-static const char SpecialFunction[] = "SpecialFunction";
+static constexpr char SpecialFunction[] = "SpecialFunction";
/// Finds all the named non-static fields of \p Record.
static std::set<const FieldDecl *>
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.cpp
index a19d2ecdad88d..25140152219cf 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDeleteCheck.cpp
@@ -41,8 +41,8 @@ AST_MATCHER(CXXMethodDecl, isSpecialFunction) {
}
} // namespace
-static const char SpecialFunction[] = "SpecialFunction";
-static const char DeletedNotPublic[] = "DeletedNotPublic";
+static constexpr char SpecialFunction[] = "SpecialFunction";
+static constexpr char DeletedNotPublic[] = "DeletedNotPublic";
UseEqualsDeleteCheck::UseEqualsDeleteCheck(StringRef Name,
ClangTidyContext *Context)
diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp
index 754ca3d3b8c31..cc371a1ab55a7 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp
@@ -30,7 +30,7 @@ AST_MATCHER(Type, sugaredNullptrType) {
} // namespace
-static const char CastSequence[] = "sequence";
+static constexpr char CastSequence[] = "sequence";
/// Create a matcher that finds implicit casts as well as the head of a
/// sequence of zero or more nested explicit casts that have an implicit cast
diff --git a/clang-tools-extra/clang-tidy/modernize/UseRangesCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseRangesCheck.cpp
index eb4d6e15fc722..28f77b4bc25ba 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseRangesCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseRangesCheck.cpp
@@ -152,7 +152,7 @@ utils::UseRangesCheck::ReplacerMap UseRangesCheck::getReplacerMap() const {
static const Signature SinglePivotFunc[] = {SinglePivotRange};
- static const std::pair<ArrayRef<Signature>, ArrayRef<const char *>>
+ static constexpr std::pair<ArrayRef<Signature>, ArrayRef<const char *>>
AlgorithmNames[] = {{SingleRangeFunc, SingleRangeNames},
{TwoRangeFunc, TwoRangeNames},
{SinglePivotFunc, SinglePivotRangeNames}};
@@ -189,13 +189,13 @@ bool UseRangesCheck::isLanguageVersionSupported(
}
ArrayRef<std::pair<StringRef, StringRef>>
UseRangesCheck::getFreeBeginEndMethods() const {
- static const std::pair<StringRef, StringRef> Refs[] = {
+ static constexpr std::pair<StringRef, StringRef> Refs[] = {
{"::std::begin", "::std::end"}, {"::std::cbegin", "::std::cend"}};
return Refs;
}
std::optional<UseRangesCheck::ReverseIteratorDescriptor>
UseRangesCheck::getReverseDescriptor() const {
- static const std::pair<StringRef, StringRef> Refs[] = {
+ static constexpr std::pair<StringRef, StringRef> Refs[] = {
{"::std::rbegin", "::std::rend"}, {"::std::crbegin", "::std::crend"}};
return ReverseIteratorDescriptor{"std::views::reverse", "<ranges>", Refs,
UseReversePipe};
diff --git a/clang-tools-extra/clang-tidy/modernize/UseTransparentFunctorsCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseTransparentFunctorsCheck.cpp
index e3672f84a3a5c..9623c885534a6 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTransparentFunctorsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTransparentFunctorsCheck.cpp
@@ -59,7 +59,7 @@ void UseTransparentFunctorsCheck::registerMatchers(MatchFinder *Finder) {
this);
}
-static const StringRef Message = "prefer transparent functors '%0<>'";
+static constexpr StringRef Message = "prefer transparent functors '%0<>'";
template <typename T> static T getInnerTypeLocAs(TypeLoc Loc) {
T Result;
diff --git a/clang-tools-extra/clang-tidy/performance/InefficientVectorOperationCheck.cpp b/clang-tools-extra/clang-tidy/performance/InefficientVectorOperationCheck.cpp
index a59ab333e6f10..814a4f854319c 100644
--- a/clang-tools-extra/clang-tidy/performance/InefficientVectorOperationCheck.cpp
+++ b/clang-tools-extra/clang-tidy/performance/InefficientVectorOperationCheck.cpp
@@ -46,17 +46,17 @@ namespace clang::tidy::performance {
// - ProtoVarDeclName: 'p' (as VarDecl).
// - ProtoVarDeclStmtName: The entire 'SomeProto p;' statement (as DeclStmt).
// - ProtoAddFieldCallName: 'p.add_xxx(i)' (as cxxMemberCallExpr).
-static const char LoopCounterName[] = "for_loop_counter";
-static const char LoopParentName[] = "loop_parent";
-static const char VectorVarDeclName[] = "vector_var_decl";
-static const char VectorVarDeclStmtName[] = "vector_var_decl_stmt";
-static const char PushBackOrEmplaceBackCallName[] = "append_call";
-static const char ProtoVarDeclName[] = "proto_var_decl";
-static const char ProtoVarDeclStmtName[] = "proto_var_decl_stmt";
-static const char ProtoAddFieldCallName[] = "proto_add_field";
-static const char LoopInitVarName[] = "loop_init_var";
-static const char LoopEndExprName[] = "loop_end_expr";
-static const char RangeLoopName[] = "for_range_loop";
+static constexpr char LoopCounterName[] = "for_loop_counter";
+static constexpr char LoopParentName[] = "loop_parent";
+static constexpr char VectorVarDeclName[] = "vector_var_decl";
+static constexpr char VectorVarDeclStmtName[] = "vector_var_decl_stmt";
+static constexpr char PushBackOrEmplaceBackCallName[] = "append_call";
+static constexpr char ProtoVarDeclName[] = "proto_var_decl";
+static constexpr char ProtoVarDeclStmtName[] = "proto_var_decl_stmt";
+static constexpr char ProtoAddFieldCallName[] = "proto_add_field";
+static constexpr char LoopInitVarName[] = "loop_init_var";
+static constexpr char LoopEndExprName[] = "loop_end_expr";
+static constexpr char RangeLoopName[] = "for_range_loop";
static ast_matchers::internal::Matcher<Expr> supportedContainerTypesMatcher() {
return hasType(cxxRecordDecl(hasAnyName(
diff --git a/clang-tools-extra/clang-tidy/readability/AvoidReturnWithVoidValueCheck.cpp b/clang-tools-extra/clang-tidy/readability/AvoidReturnWithVoidValueCheck.cpp
index 2b31281bb4a63..b8c4faa4b4edc 100644
--- a/clang-tools-extra/clang-tidy/readability/AvoidReturnWithVoidValueCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/AvoidReturnWithVoidValueCheck.cpp
@@ -15,10 +15,10 @@ using namespace clang::ast_matchers;
namespace clang::tidy::readability {
static constexpr char IgnoreMacrosName[] = "IgnoreMacros";
-static const bool IgnoreMacrosDefault = true;
+static constexpr bool IgnoreMacrosDefault = true;
static constexpr char StrictModeName[] = "StrictMode";
-static const bool StrictModeDefault = true;
+static constexpr bool StrictModeDefault = true;
AvoidReturnWithVoidValueCheck::AvoidReturnWithVoidValueCheck(
StringRef Name, ClangTidyContext *Context)
diff --git a/clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp b/clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp
index 2b6212f159ced..fccda912947eb 100644
--- a/clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp
@@ -41,10 +41,11 @@ class PPConditionalCollector : public PPCallbacks {
} // namespace
-static const char InterruptingStr[] = "interrupting";
-static const char WarningMessage[] = "do not use 'else' after '%0'";
-static const char WarnOnUnfixableStr[] = "WarnOnUnfixable";
-static const char WarnOnConditionVariablesStr[] = "WarnOnConditionVariables";
+static constexpr char InterruptingStr[] = "interrupting";
+static constexpr char WarningMessage[] = "do not use 'else' after '%0'";
+static constexpr char WarnOnUnfixableStr[] = "WarnOnUnfixable";
+static constexpr char WarnOnConditionVariablesStr[] =
+ "WarnOnConditionVariables";
static const DeclRefExpr *findUsage(const Stmt *Node, int64_t DeclIdentifier) {
if (!Node)
diff --git a/clang-tools-extra/clang-tidy/readability/FunctionCognitiveComplexityCheck.cpp b/clang-tools-extra/clang-tidy/readability/FunctionCognitiveComplexityCheck.cpp
index 43b98faaf6149..1d8c4f8b58d8f 100644
--- a/clang-tools-extra/clang-tidy/readability/FunctionCognitiveComplexityCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/FunctionCognitiveComplexityCheck.cpp
@@ -152,7 +152,7 @@ struct CognitiveComplexity final {
// to use is based of the combination of the CognitiveComplexity::Criteria.
// It would be nice to have it in CognitiveComplexity struct, but then it is
// not static.
-static const std::array<const StringRef, 4> Msgs = {{
+static constexpr std::array<StringRef, 4> Msgs = {{
// B1 + B2 + B3
"+%0, including nesting penalty of %1, nesting level increased to %2",
diff --git a/clang-tools-extra/clang-tidy/readability/SimplifySubscriptExprCheck.cpp b/clang-tools-extra/clang-tidy/readability/SimplifySubscriptExprCheck.cpp
index 591ee1fbe067c..6091e162cd4c0 100644
--- a/clang-tools-extra/clang-tidy/readability/SimplifySubscriptExprCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/SimplifySubscriptExprCheck.cpp
@@ -15,7 +15,7 @@ using namespace clang::ast_matchers;
namespace clang::tidy::readability {
-static const char KDefaultTypes[] =
+static constexpr char KDefaultTypes[] =
"::std::basic_string;::std::basic_string_view;::std::vector;::std::array;::"
"std::span";
diff --git a/clang-tools-extra/clang-tidy/readability/StringCompareCheck.cpp b/clang-tools-extra/clang-tidy/readability/StringCompareCheck.cpp
index d1237fa4c1438..2e1ddbc24c610 100644
--- a/clang-tools-extra/clang-tidy/readability/StringCompareCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/StringCompareCheck.cpp
@@ -19,12 +19,14 @@ namespace optutils = clang::tidy::utils::options;
namespace clang::tidy::readability {
-static const StringRef CompareMessage = "do not use 'compare' to test equality "
- "of strings; use the string equality "
- "operator instead";
-
-static const StringRef DefaultStringLikeClasses = "::std::basic_string;"
- "::std::basic_string_view";
+static constexpr StringRef CompareMessage =
+ "do not use 'compare' to test equality "
+ "of strings; use the string equality "
+ "operator instead";
+
+static constexpr StringRef DefaultStringLikeClasses =
+ "::std::basic_string;"
+ "::std::basic_string_view";
StringCompareCheck::StringCompareCheck(StringRef Name,
ClangTidyContext *Context)
diff --git a/clang-tools-extra/clang-tidy/utils/OptionsUtils.cpp b/clang-tools-extra/clang-tidy/utils/OptionsUtils.cpp
index 2f784360ac7ec..ad536b6290ca0 100644
--- a/clang-tools-extra/clang-tidy/utils/OptionsUtils.cpp
+++ b/clang-tools-extra/clang-tidy/utils/OptionsUtils.cpp
@@ -11,7 +11,7 @@
namespace clang::tidy::utils::options {
-static const char StringsDelimiter[] = ";";
+static constexpr char StringsDelimiter[] = ";";
std::vector<StringRef> parseStringList(StringRef Option) {
Option = Option.trim().trim(StringsDelimiter);
>From 2d0f0dc3f962b4ca72f9da12ba4e9dd9dfa22cb3 Mon Sep 17 00:00:00 2001
From: Victor Chernyakin <chernyakin.victor.j at outlook.com>
Date: Tue, 23 Dec 2025 12:46:09 -0700
Subject: [PATCH 2/2] Commit suggestion
Co-authored-by: EugeneZelenko <eugene.zelenko at gmail.com>
---
.../clang-tidy/readability/StringCompareCheck.cpp | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/clang-tools-extra/clang-tidy/readability/StringCompareCheck.cpp b/clang-tools-extra/clang-tidy/readability/StringCompareCheck.cpp
index 2e1ddbc24c610..6bd3674de6f8f 100644
--- a/clang-tools-extra/clang-tidy/readability/StringCompareCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/StringCompareCheck.cpp
@@ -20,9 +20,8 @@ namespace optutils = clang::tidy::utils::options;
namespace clang::tidy::readability {
static constexpr StringRef CompareMessage =
- "do not use 'compare' to test equality "
- "of strings; use the string equality "
- "operator instead";
+ "do not use 'compare' to test equality of strings; use the string "
+ "equality operator instead";
static constexpr StringRef DefaultStringLikeClasses =
"::std::basic_string;"
More information about the cfe-commits
mailing list