https://github.com/localspook updated https://github.com/llvm/llvm-project/pull/147301
>From bad855d41d4350f51af955a33c079f3f1cf605f3 Mon Sep 17 00:00:00 2001 From: Victor Chernyakin <chernyakin.victo...@outlook.com> Date: Mon, 7 Jul 2025 06:34:02 -0700 Subject: [PATCH] [clang-tidy][NFC] Prefer `constexpr llvm::StringLiteral` over `const char *` --- clang-tools-extra/clang-tidy/ClangTidy.cpp | 8 ++++---- clang-tools-extra/clang-tidy/abseil/AbseilMatcher.h | 4 ++-- .../ComparePointerToMemberVirtualFunctionCheck.cpp | 2 +- .../cppcoreguidelines/ProTypeMemberInitCheck.cpp | 4 ++-- clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp | 3 ++- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/clang-tools-extra/clang-tidy/ClangTidy.cpp b/clang-tools-extra/clang-tidy/ClangTidy.cpp index f4ab93b51f4a7..c24e339d3628d 100644 --- a/clang-tools-extra/clang-tidy/ClangTidy.cpp +++ b/clang-tools-extra/clang-tidy/ClangTidy.cpp @@ -55,7 +55,8 @@ namespace clang::tidy { namespace { #if CLANG_TIDY_ENABLE_STATIC_ANALYZER -static const char *AnalyzerCheckNamePrefix = "clang-analyzer-"; +static constexpr llvm::StringLiteral AnalyzerCheckNamePrefix = + "clang-analyzer-"; class AnalyzerDiagnosticConsumer : public ento::PathDiagnosticConsumer { public: @@ -351,10 +352,9 @@ ClangTidyASTConsumerFactory::ClangTidyASTConsumerFactory( static void setStaticAnalyzerCheckerOpts(const ClangTidyOptions &Opts, clang::AnalyzerOptions &AnalyzerOptions) { - StringRef AnalyzerPrefix(AnalyzerCheckNamePrefix); for (const auto &Opt : Opts.CheckOptions) { StringRef OptName(Opt.getKey()); - if (!OptName.consume_front(AnalyzerPrefix)) + if (!OptName.consume_front(AnalyzerCheckNamePrefix)) continue; // Analyzer options are always local options so we can ignore priority. AnalyzerOptions.Config[OptName] = Opt.getValue().Value; @@ -476,7 +476,7 @@ std::vector<std::string> ClangTidyASTConsumerFactory::getCheckNames() { #if CLANG_TIDY_ENABLE_STATIC_ANALYZER for (const auto &AnalyzerCheck : getAnalyzerCheckersAndPackages( Context, Context.canEnableAnalyzerAlphaCheckers())) - CheckNames.push_back(AnalyzerCheckNamePrefix + AnalyzerCheck.first); + CheckNames.emplace_back(AnalyzerCheckNamePrefix + AnalyzerCheck.first); #endif // CLANG_TIDY_ENABLE_STATIC_ANALYZER llvm::sort(CheckNames); diff --git a/clang-tools-extra/clang-tidy/abseil/AbseilMatcher.h b/clang-tools-extra/clang-tidy/abseil/AbseilMatcher.h index 1eef86ddc00b9..2ae3c00f7ee3e 100644 --- a/clang-tools-extra/clang-tidy/abseil/AbseilMatcher.h +++ b/clang-tools-extra/clang-tidy/abseil/AbseilMatcher.h @@ -46,12 +46,12 @@ AST_POLYMORPHIC_MATCHER( if (PrefixPosition == StringRef::npos) return false; Path = Path.drop_front(PrefixPosition + AbslPrefix.size()); - static const char *AbseilLibraries[] = { + static constexpr llvm::StringLiteral AbseilLibraries[] = { "algorithm", "base", "container", "debugging", "flags", "hash", "iterator", "memory", "meta", "numeric", "profiling", "random", "status", "strings", "synchronization", "time", "types", "utility"}; - return llvm::any_of(AbseilLibraries, [&](const char *Library) { + return llvm::any_of(AbseilLibraries, [&](llvm::StringLiteral Library) { return Path.starts_with(Library); }); } diff --git a/clang-tools-extra/clang-tidy/bugprone/ComparePointerToMemberVirtualFunctionCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ComparePointerToMemberVirtualFunctionCheck.cpp index f2746ba159d04..1cbf1e22a33a7 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ComparePointerToMemberVirtualFunctionCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ComparePointerToMemberVirtualFunctionCheck.cpp @@ -25,7 +25,7 @@ namespace { AST_MATCHER(CXXMethodDecl, isVirtual) { return Node.isVirtual(); } -static const char *const ErrorMsg = +static constexpr llvm::StringLiteral ErrorMsg = "comparing a pointer to member virtual function with other pointer is " "unspecified behavior, only compare it with a null-pointer constant for " "equality."; diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp index aaaaf6b66b51a..b413b12cd37ab 100644 --- a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp @@ -373,8 +373,8 @@ static bool isEmpty(ASTContext &Context, const QualType &Type) { return isIncompleteOrZeroLengthArrayType(Context, Type); } -static const char *getInitializer(QualType QT, bool UseAssignment) { - const char *DefaultInitializer = "{}"; +static llvm::StringLiteral getInitializer(QualType QT, bool UseAssignment) { + static constexpr llvm::StringLiteral DefaultInitializer = "{}"; if (!UseAssignment) return DefaultInitializer; diff --git a/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp index 30fcba367db67..936a906651f16 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp @@ -119,7 +119,8 @@ void UseUsingCheck::check(const MatchFinder::MatchResult &Result) { if (StartLoc.isMacroID() && IgnoreMacros) return; - static const char *UseUsingWarning = "use 'using' instead of 'typedef'"; + static constexpr llvm::StringLiteral UseUsingWarning = + "use 'using' instead of 'typedef'"; // Warn at StartLoc but do not fix if there is macro or array. if (MatchedDecl->getUnderlyingType()->isArrayType() || StartLoc.isMacroID()) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits