https://github.com/localspook updated https://github.com/llvm/llvm-project/pull/174129
>From 54885b68b8e541148fca8b46fb34b79326b5d33b Mon Sep 17 00:00:00 2001 From: Victor Chernyakin <[email protected]> Date: Wed, 31 Dec 2025 21:13:09 -0800 Subject: [PATCH 1/2] [clang-tidy][NFC] Prefer `llvm::split` over `StringRef::split` --- .../ComparisonInTempFailureRetryCheck.cpp | 5 ++--- .../bugprone/AssertSideEffectCheck.cpp | 5 ++--- .../bugprone/ExceptionEscapeCheck.cpp | 21 +++++++------------ .../bugprone/RandomGeneratorSeedCheck.cpp | 5 ++--- .../clang-tidy/modernize/UseNullptrCheck.cpp | 5 ++--- .../openmp/ExceptionEscapeCheck.cpp | 8 ++----- .../readability/IdentifierNamingCheck.cpp | 11 ++-------- .../clang-tidy/utils/OptionsUtils.cpp | 17 ++++++--------- .../clang-tidy/DeclRefExprUtilsTest.cpp | 4 +--- 9 files changed, 26 insertions(+), 55 deletions(-) diff --git a/clang-tools-extra/clang-tidy/android/ComparisonInTempFailureRetryCheck.cpp b/clang-tools-extra/clang-tidy/android/ComparisonInTempFailureRetryCheck.cpp index c42f069b487c3..173aa6900c099 100644 --- a/clang-tools-extra/clang-tidy/android/ComparisonInTempFailureRetryCheck.cpp +++ b/clang-tools-extra/clang-tidy/android/ComparisonInTempFailureRetryCheck.cpp @@ -18,9 +18,8 @@ namespace clang::tidy::android { ComparisonInTempFailureRetryCheck::ComparisonInTempFailureRetryCheck( StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), - RawRetryList(Options.get("RetryMacros", "TEMP_FAILURE_RETRY")) { - RawRetryList.split(RetryMacros, ",", -1, false); -} + RawRetryList(Options.get("RetryMacros", "TEMP_FAILURE_RETRY")), + RetryMacros(llvm::split(RawRetryList, ',')) {} void ComparisonInTempFailureRetryCheck::storeOptions( ClangTidyOptions::OptionMap &Opts) { diff --git a/clang-tools-extra/clang-tidy/bugprone/AssertSideEffectCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/AssertSideEffectCheck.cpp index 632f536a5b20b..a958d3350514e 100644 --- a/clang-tools-extra/clang-tidy/bugprone/AssertSideEffectCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/AssertSideEffectCheck.cpp @@ -90,9 +90,8 @@ AssertSideEffectCheck::AssertSideEffectCheck(StringRef Name, CheckFunctionCalls(Options.get("CheckFunctionCalls", false)), RawAssertList(Options.get("AssertMacros", "assert,NSAssert,NSCAssert")), IgnoredFunctions(utils::options::parseListPair( - "__builtin_expect;", Options.get("IgnoredFunctions", ""))) { - RawAssertList.split(AssertMacros, ",", -1, false); -} + "__builtin_expect;", Options.get("IgnoredFunctions", ""))), + AssertMacros(llvm::split(RawAssertList, ',')) {} // The options are explained in AssertSideEffectCheck.h. void AssertSideEffectCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { diff --git a/clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp index 1cfb1511fa94e..572ce5d9ea5f6 100644 --- a/clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp @@ -42,20 +42,13 @@ ExceptionEscapeCheck::ExceptionEscapeCheck(StringRef Name, CheckDestructors(Options.get("CheckDestructors", true)), CheckMoveMemberFunctions(Options.get("CheckMoveMemberFunctions", true)), CheckMain(Options.get("CheckMain", true)), - CheckNothrowFunctions(Options.get("CheckNothrowFunctions", true)) { - llvm::SmallVector<StringRef, 8> FunctionsThatShouldNotThrowVec, - IgnoredExceptionsVec, CheckedSwapFunctionsVec; - RawFunctionsThatShouldNotThrow.split(FunctionsThatShouldNotThrowVec, ",", -1, - false); - FunctionsThatShouldNotThrow.insert_range(FunctionsThatShouldNotThrowVec); - - RawCheckedSwapFunctions.split(CheckedSwapFunctionsVec, ",", -1, false); - CheckedSwapFunctions.insert_range(CheckedSwapFunctionsVec); - - llvm::StringSet<> IgnoredExceptions; - RawIgnoredExceptions.split(IgnoredExceptionsVec, ",", -1, false); - IgnoredExceptions.insert_range(IgnoredExceptionsVec); - Tracer.ignoreExceptions(std::move(IgnoredExceptions)); + CheckNothrowFunctions(Options.get("CheckNothrowFunctions", true)), + FunctionsThatShouldNotThrow( + llvm::from_range, llvm::split(RawFunctionsThatShouldNotThrow, ',')), + CheckedSwapFunctions(llvm::from_range, + llvm::split(RawCheckedSwapFunctions, ',')) { + Tracer.ignoreExceptions( + {llvm::from_range, llvm::split(RawIgnoredExceptions, ',')}); Tracer.ignoreBadAlloc(true); } diff --git a/clang-tools-extra/clang-tidy/bugprone/RandomGeneratorSeedCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/RandomGeneratorSeedCheck.cpp index 3e32e9b8a704c..de614d0bedc1c 100644 --- a/clang-tools-extra/clang-tidy/bugprone/RandomGeneratorSeedCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/RandomGeneratorSeedCheck.cpp @@ -19,9 +19,8 @@ RandomGeneratorSeedCheck::RandomGeneratorSeedCheck(StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), RawDisallowedSeedTypes( - Options.get("DisallowedSeedTypes", "time_t,std::time_t")) { - RawDisallowedSeedTypes.split(DisallowedSeedTypes, ','); -} + Options.get("DisallowedSeedTypes", "time_t,std::time_t")), + DisallowedSeedTypes(llvm::split(RawDisallowedSeedTypes, ',')) {} void RandomGeneratorSeedCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { Options.store(Opts, "DisallowedSeedTypes", RawDisallowedSeedTypes); diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp index cc371a1ab55a7..96bf36c96205d 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp @@ -495,9 +495,8 @@ UseNullptrCheck::UseNullptrCheck(StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), NullMacrosStr(Options.get("NullMacros", "NULL")), IgnoredTypes(utils::options::parseStringList(Options.get( - "IgnoredTypes", "_CmpUnspecifiedParam;^std::__cmp_cat::__unspec"))) { - NullMacrosStr.split(NullMacros, ","); -} + "IgnoredTypes", "_CmpUnspecifiedParam;^std::__cmp_cat::__unspec"))), + NullMacros(llvm::split(NullMacrosStr, ',')) {} void UseNullptrCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { Options.store(Opts, "NullMacros", NullMacrosStr); diff --git a/clang-tools-extra/clang-tidy/openmp/ExceptionEscapeCheck.cpp b/clang-tools-extra/clang-tidy/openmp/ExceptionEscapeCheck.cpp index 3801fc0f420e5..a0e3ee060f06f 100644 --- a/clang-tools-extra/clang-tidy/openmp/ExceptionEscapeCheck.cpp +++ b/clang-tools-extra/clang-tidy/openmp/ExceptionEscapeCheck.cpp @@ -20,13 +20,9 @@ ExceptionEscapeCheck::ExceptionEscapeCheck(StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), RawIgnoredExceptions(Options.get("IgnoredExceptions", "")) { - llvm::SmallVector<StringRef, 8> IgnoredExceptionsVec; - llvm::StringSet<> IgnoredExceptions; - RawIgnoredExceptions.split(IgnoredExceptionsVec, ",", -1, false); - llvm::transform(IgnoredExceptionsVec, IgnoredExceptionsVec.begin(), - [](StringRef S) { return S.trim(); }); - IgnoredExceptions.insert_range(IgnoredExceptionsVec); + for (const StringRef S : llvm::split(RawIgnoredExceptions, ',')) + IgnoredExceptions.insert(S.trim()); Tracer.ignoreExceptions(std::move(IgnoredExceptions)); Tracer.ignoreBadAlloc(true); } diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp index 9cee6ddb93d4d..948d8dccfc232 100644 --- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp @@ -660,13 +660,9 @@ std::string IdentifierNamingCheck::HungarianNotation::getEnumPrefix( static const llvm::Regex Splitter( "([a-z0-9A-Z]*)(_+)|([A-Z]?[a-z0-9]+)([A-Z]|$)|([A-Z]+)([A-Z]|$)"); - const StringRef EnumName(Name); - SmallVector<StringRef, 8> Substrs; - EnumName.split(Substrs, "_", -1, false); - SmallVector<StringRef, 8> Words; SmallVector<StringRef, 8> Groups; - for (auto Substr : Substrs) { + for (StringRef Substr : llvm::split(Name, '_')) { while (!Substr.empty()) { Groups.clear(); if (!Splitter.match(Substr, &Groups)) @@ -910,12 +906,9 @@ std::string IdentifierNamingCheck::fixupWithCase( static const llvm::Regex Splitter( "([a-z0-9A-Z]*)(_+)|([A-Z]?[a-z0-9]+)([A-Z]|$)|([A-Z]+)([A-Z]|$)"); - SmallVector<StringRef, 8> Substrs; - Name.split(Substrs, "_", -1, false); - SmallVector<StringRef, 8> Words; SmallVector<StringRef, 8> Groups; - for (auto Substr : Substrs) { + for (auto Substr : llvm::split(Name, '_')) { while (!Substr.empty()) { Groups.clear(); if (!Splitter.match(Substr, &Groups)) diff --git a/clang-tools-extra/clang-tidy/utils/OptionsUtils.cpp b/clang-tools-extra/clang-tidy/utils/OptionsUtils.cpp index ad536b6290ca0..61a0448cf58c4 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 constexpr char StringsDelimiter[] = ";"; +static constexpr char StringsDelimiter = ';'; std::vector<StringRef> parseStringList(StringRef Option) { Option = Option.trim().trim(StringsDelimiter); @@ -19,16 +19,11 @@ std::vector<StringRef> parseStringList(StringRef Option) { return {}; std::vector<StringRef> Result; Result.reserve(Option.count(StringsDelimiter) + 1); - StringRef Cur; - while (std::tie(Cur, Option) = Option.split(StringsDelimiter), - !Option.empty()) { - Cur = Cur.trim(); - if (!Cur.empty()) - Result.push_back(Cur); + for (StringRef SubStr : llvm::split(Option, StringsDelimiter)) { + SubStr = SubStr.trim(); + if (!SubStr.empty()) + Result.push_back(SubStr); } - Cur = Cur.trim(); - if (!Cur.empty()) - Result.push_back(Cur); return Result; } @@ -57,7 +52,7 @@ std::vector<StringRef> parseListPair(StringRef L, StringRef R) { } std::string serializeStringList(ArrayRef<StringRef> Strings) { - return llvm::join(Strings, StringsDelimiter); + return llvm::join(Strings, {&StringsDelimiter, 1}); } } // namespace clang::tidy::utils::options diff --git a/clang-tools-extra/unittests/clang-tidy/DeclRefExprUtilsTest.cpp b/clang-tools-extra/unittests/clang-tidy/DeclRefExprUtilsTest.cpp index 064e04c932de8..496ded3d74536 100644 --- a/clang-tools-extra/unittests/clang-tidy/DeclRefExprUtilsTest.cpp +++ b/clang-tools-extra/unittests/clang-tidy/DeclRefExprUtilsTest.cpp @@ -102,9 +102,7 @@ template <int Indirections> void RunTest(StringRef Snippet) { )"; std::string Code = (CommonCode + Snippet).str(); - - llvm::SmallVector<StringRef, 1> Parts; - StringRef(Code).split(Parts, "/*const*/"); + llvm::SmallVector<StringRef, 1> Parts(llvm::split(Code, "/*const*/")); EXPECT_EQ(Code, runCheckOnCode<ConstReferenceDeclRefExprsTransform<Indirections>>( >From c0e1347203e46c549376f587fd4226cbce4f4be2 Mon Sep 17 00:00:00 2001 From: Victor Chernyakin <[email protected]> Date: Wed, 31 Dec 2025 22:55:35 -0700 Subject: [PATCH 2/2] Reorder member initializers --- .../clang-tidy/bugprone/AssertSideEffectCheck.cpp | 4 ++-- clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/AssertSideEffectCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/AssertSideEffectCheck.cpp index a958d3350514e..04bd4a9f9a078 100644 --- a/clang-tools-extra/clang-tidy/bugprone/AssertSideEffectCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/AssertSideEffectCheck.cpp @@ -89,9 +89,9 @@ AssertSideEffectCheck::AssertSideEffectCheck(StringRef Name, : ClangTidyCheck(Name, Context), CheckFunctionCalls(Options.get("CheckFunctionCalls", false)), RawAssertList(Options.get("AssertMacros", "assert,NSAssert,NSCAssert")), + AssertMacros(llvm::split(RawAssertList, ',')), IgnoredFunctions(utils::options::parseListPair( - "__builtin_expect;", Options.get("IgnoredFunctions", ""))), - AssertMacros(llvm::split(RawAssertList, ',')) {} + "__builtin_expect;", Options.get("IgnoredFunctions", ""))) {} // The options are explained in AssertSideEffectCheck.h. void AssertSideEffectCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { diff --git a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp index 96bf36c96205d..8384bfc25dec2 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseNullptrCheck.cpp @@ -494,9 +494,9 @@ class CastSequenceVisitor : public RecursiveASTVisitor<CastSequenceVisitor> { UseNullptrCheck::UseNullptrCheck(StringRef Name, ClangTidyContext *Context) : ClangTidyCheck(Name, Context), NullMacrosStr(Options.get("NullMacros", "NULL")), + NullMacros(llvm::split(NullMacrosStr, ',')), IgnoredTypes(utils::options::parseStringList(Options.get( - "IgnoredTypes", "_CmpUnspecifiedParam;^std::__cmp_cat::__unspec"))), - NullMacros(llvm::split(NullMacrosStr, ',')) {} + "IgnoredTypes", "_CmpUnspecifiedParam;^std::__cmp_cat::__unspec"))) {} void UseNullptrCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) { Options.store(Opts, "NullMacros", NullMacrosStr); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
