https://github.com/localspook updated https://github.com/llvm/llvm-project/pull/172947
>From 88005c3eae8d658db1666930c5a04a225ba6c377 Mon Sep 17 00:00:00 2001 From: Victor Chernyakin <[email protected]> Date: Thu, 18 Dec 2025 19:02:02 -0800 Subject: [PATCH 1/2] [clang-tidy][NFC] Give structs, classes, and enums internal linkage where applicable --- clang-tools-extra/clang-tidy/ClangTidyOptions.cpp | 8 ++++++++ .../clang-tidy/NoLintDirectiveHandler.cpp | 4 ++++ .../clang-tidy/abseil/AbseilTidyModule.cpp | 3 +++ .../clang-tidy/altera/AlteraTidyModule.cpp | 2 ++ .../clang-tidy/android/AndroidTidyModule.cpp | 3 +++ .../clang-tidy/boost/BoostTidyModule.cpp | 3 +++ .../clang-tidy/bugprone/BugproneTidyModule.cpp | 2 ++ .../bugprone/EasilySwappableParametersCheck.cpp | 15 ++++++++++++++- .../bugprone/NotNullTerminatedResultCheck.cpp | 4 ++-- .../bugprone/StringIntegerAssignmentCheck.cpp | 4 ++++ .../bugprone/SuspiciousEnumUsageCheck.cpp | 4 ++++ .../clang-tidy/bugprone/UseAfterMoveCheck.cpp | 4 ++++ .../clang-tidy/cert/CERTTidyModule.cpp | 2 ++ .../concurrency/ConcurrencyTidyModule.cpp | 2 ++ .../CppCoreGuidelinesTidyModule.cpp | 3 +++ .../PreferMemberInitializerCheck.cpp | 4 ++++ .../clang-tidy/custom/CustomTidyModule.cpp | 9 ++++++++- .../clang-tidy/darwin/DarwinTidyModule.cpp | 2 ++ .../clang-tidy/fuchsia/FuchsiaTidyModule.cpp | 4 ++++ .../clang-tidy/google/GoogleTidyModule.cpp | 3 +++ .../clang-tidy/google/TodoCommentCheck.cpp | 2 ++ .../clang-tidy/hicpp/HICPPTidyModule.cpp | 3 +++ .../linuxkernel/LinuxKernelTidyModule.cpp | 4 ++++ .../clang-tidy/llvm/LLVMTidyModule.cpp | 3 +++ .../clang-tidy/llvmlibc/LLVMLibcTidyModule.cpp | 3 +++ .../clang-tidy/misc/ConstCorrectnessCheck.cpp | 4 ++++ .../clang-tidy/misc/MiscTidyModule.cpp | 2 ++ .../clang-tidy/modernize/LoopConvertCheck.cpp | 4 ++++ .../clang-tidy/modernize/ModernizeTidyModule.cpp | 3 +++ .../clang-tidy/modernize/UseConstraintsCheck.cpp | 2 +- .../clang-tidy/mpi/MPITidyModule.cpp | 2 ++ .../clang-tidy/objc/ObjCTidyModule.cpp | 3 +++ .../clang-tidy/openmp/OpenMPTidyModule.cpp | 3 +++ .../performance/PerformanceTidyModule.cpp | 3 +++ .../clang-tidy/plugin/ClangTidyPlugin.cpp | 3 +++ .../portability/AvoidPragmaOnceCheck.cpp | 4 ++++ .../portability/PortabilityTidyModule.cpp | 3 +++ .../readability/ReadabilityTidyModule.cpp | 3 +++ .../clang-tidy/zircon/ZirconTidyModule.cpp | 3 +++ 39 files changed, 137 insertions(+), 5 deletions(-) diff --git a/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp b/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp index 2ebab00b3ed91..aa9525202d4d9 100644 --- a/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp +++ b/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp @@ -67,6 +67,8 @@ template <> struct MappingTraits<ClangTidyOptions::StringPair> { } }; +namespace { + struct NOptionMap { NOptionMap(IO &) {} NOptionMap(IO &, const ClangTidyOptions::OptionMap &OptionMap) { @@ -84,6 +86,8 @@ struct NOptionMap { std::vector<ClangTidyOptions::StringPair> Options; }; +} // namespace + template <> void yamlize(IO &IO, ClangTidyOptions::OptionMap &Val, bool, EmptyContext &Ctx) { @@ -178,11 +182,15 @@ template <> struct MappingTraits<ClangTidyOptions::CustomCheckValue> { } }; +namespace { + struct GlobListVariant { std::optional<std::string> AsString; std::optional<std::vector<std::string>> AsVector; }; +} // namespace + template <> void yamlize(IO &IO, GlobListVariant &Val, bool, EmptyContext &Ctx) { if (!IO.outputting()) { diff --git a/clang-tools-extra/clang-tidy/NoLintDirectiveHandler.cpp b/clang-tools-extra/clang-tidy/NoLintDirectiveHandler.cpp index b552ae8b1783a..f428c1d2b3560 100644 --- a/clang-tools-extra/clang-tidy/NoLintDirectiveHandler.cpp +++ b/clang-tools-extra/clang-tidy/NoLintDirectiveHandler.cpp @@ -35,9 +35,13 @@ namespace clang::tidy { // NoLintType //===----------------------------------------------------------------------===// +namespace { + // The type - one of NOLINT[NEXTLINE/BEGIN/END]. enum class NoLintType { NoLint, NoLintNextLine, NoLintBegin, NoLintEnd }; +} // namespace + // Convert a string like "NOLINTNEXTLINE" to its enum `Type::NoLintNextLine`. // Return `std::nullopt` if the string is unrecognized. static std::optional<NoLintType> strToNoLintType(StringRef Str) { diff --git a/clang-tools-extra/clang-tidy/abseil/AbseilTidyModule.cpp b/clang-tools-extra/clang-tidy/abseil/AbseilTidyModule.cpp index 1083d4373a6bd..e00e88dc76a7f 100644 --- a/clang-tools-extra/clang-tidy/abseil/AbseilTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/abseil/AbseilTidyModule.cpp @@ -32,6 +32,7 @@ namespace clang::tidy { namespace abseil { +namespace { class AbseilModule : public ClangTidyModule { public: @@ -75,6 +76,8 @@ class AbseilModule : public ClangTidyModule { } }; +} // namespace + // Register the AbseilModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<AbseilModule> X("abseil-module", "Add Abseil checks."); diff --git a/clang-tools-extra/clang-tidy/altera/AlteraTidyModule.cpp b/clang-tools-extra/clang-tidy/altera/AlteraTidyModule.cpp index 28733ef1d994c..c29a3be565332 100644 --- a/clang-tools-extra/clang-tidy/altera/AlteraTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/altera/AlteraTidyModule.cpp @@ -19,6 +19,7 @@ using namespace clang::ast_matchers; namespace clang::tidy { namespace altera { +namespace { class AlteraModule : public ClangTidyModule { public: @@ -35,6 +36,7 @@ class AlteraModule : public ClangTidyModule { } }; +} // namespace } // namespace altera // Register the AlteraTidyModule using this statically initialized variable. diff --git a/clang-tools-extra/clang-tidy/android/AndroidTidyModule.cpp b/clang-tools-extra/clang-tidy/android/AndroidTidyModule.cpp index 40362531f2daf..6b48ec152838c 100644 --- a/clang-tools-extra/clang-tidy/android/AndroidTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/android/AndroidTidyModule.cpp @@ -29,6 +29,7 @@ using namespace clang::ast_matchers; namespace clang::tidy { namespace android { +namespace { /// This module is for Android specific checks. class AndroidModule : public ClangTidyModule { @@ -59,6 +60,8 @@ class AndroidModule : public ClangTidyModule { } }; +} // namespace + // Register the AndroidTidyModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<AndroidModule> X("android-module", "Adds Android platform checks."); diff --git a/clang-tools-extra/clang-tidy/boost/BoostTidyModule.cpp b/clang-tools-extra/clang-tidy/boost/BoostTidyModule.cpp index c13a24401afba..859c25e3366eb 100644 --- a/clang-tools-extra/clang-tidy/boost/BoostTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/boost/BoostTidyModule.cpp @@ -15,6 +15,7 @@ using namespace clang::ast_matchers; namespace clang::tidy { namespace boost { +namespace { class BoostModule : public ClangTidyModule { public: @@ -24,6 +25,8 @@ class BoostModule : public ClangTidyModule { } }; +} // namespace + // Register the BoostModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<BoostModule> X("boost-module", "Add boost checks."); diff --git a/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp b/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp index 6859dc97c112a..61a680a72a027 100644 --- a/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp @@ -115,6 +115,7 @@ namespace clang::tidy { namespace bugprone { +namespace { class BugproneModule : public ClangTidyModule { public: @@ -319,6 +320,7 @@ class BugproneModule : public ClangTidyModule { } }; +} // namespace } // namespace bugprone // Register the BugproneTidyModule using this statically initialized variable. diff --git a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp index 496f3e5015990..8047dcea0a5b7 100644 --- a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp @@ -106,6 +106,8 @@ static bool prefixSuffixCoverUnderThreshold(std::size_t Threshold, namespace model { +namespace { + /// The language features involved in allowing the mix between two parameters. enum class MixFlags : unsigned char { Invalid = 0, ///< Sentinel bit pattern. DO NOT USE! @@ -129,6 +131,9 @@ enum class MixFlags : unsigned char { LLVM_MARK_AS_BITMASK_ENUM(/* LargestValue =*/ImplicitConversion) }; + +} // namespace + LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE(); /// Returns whether the SearchedFlag is turned on in the Data. @@ -179,6 +184,8 @@ static inline std::string formatMixFlags(MixFlags F) { #endif // NDEBUG +namespace { + /// The results of the steps of an Implicit Conversion Sequence is saved in /// an instance of this record. /// @@ -565,6 +572,8 @@ enum class ImplicitConversionModellingMode : unsigned char { OneWaySingleStandardOnly }; +} // namespace + static MixData isLRefEquallyBindingToType(const TheCheck &Check, const LValueReferenceType *LRef, QualType Ty, @@ -1594,6 +1603,8 @@ static bool lazyMapOfSetsIntersectionExists(const MapTy &Map, const ElemTy &E1, }); } +namespace { + /// Implements the heuristic that marks two parameters related if there is /// a usage for both in the same strict expression subtree. A strict /// expression subtree is a tree which only includes Expr nodes, i.e. no @@ -1755,6 +1766,8 @@ class Returned { } }; +} // namespace + } // namespace relatedness_heuristic /// Helper class that is used to detect if two parameters of the same function @@ -1950,7 +1963,7 @@ static inline bool needsToPrintTypeInDiagnostic(const model::Mix &M) { /// Returns whether a particular Mix between the two parameters should have /// implicit conversions elaborated. static inline bool needsToElaborateImplicitConversion(const model::Mix &M) { - return hasFlag(M.flags(), model::MixFlags::ImplicitConversion); + return model::hasFlag(M.flags(), model::MixFlags::ImplicitConversion); } namespace { diff --git a/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp index 7198c1b1c8aaf..b1c2638bf4829 100644 --- a/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp @@ -32,11 +32,11 @@ constexpr llvm::StringLiteral LengthExprName = "LengthExpr"; constexpr llvm::StringLiteral WrongLengthExprName = "WrongLength"; constexpr llvm::StringLiteral UnknownLengthName = "UnknownLength"; +namespace { enum class LengthHandleKind { Increase, Decrease }; +} // namespace -namespace { static Preprocessor *PP; -} // namespace // Returns the expression of destination's capacity which is part of a // 'VariableArrayType', 'ConstantArrayTypeLoc' or an argument of a 'malloc()' diff --git a/clang-tools-extra/clang-tidy/bugprone/StringIntegerAssignmentCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/StringIntegerAssignmentCheck.cpp index 8454fd1045673..701c0e56e6f99 100644 --- a/clang-tools-extra/clang-tidy/bugprone/StringIntegerAssignmentCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/StringIntegerAssignmentCheck.cpp @@ -40,6 +40,8 @@ void StringIntegerAssignmentCheck::registerMatchers(MatchFinder *Finder) { this); } +namespace { + class CharExpressionDetector { public: CharExpressionDetector(QualType CharType, const ASTContext &Ctx) @@ -124,6 +126,8 @@ class CharExpressionDetector { const ASTContext &Ctx; }; +} // namespace + void StringIntegerAssignmentCheck::check( const MatchFinder::MatchResult &Result) { const auto *Argument = Result.Nodes.getNodeAs<Expr>("expr"); diff --git a/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp index ef7f0b5b54eb3..f28bdbeb6db84 100644 --- a/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp @@ -30,6 +30,8 @@ static const char BitmaskVarErrorMessage[] = static const char BitmaskNoteMessage[] = "used here as a bitmask"; +namespace { + /// Stores a min and a max value which describe an interval. struct ValueRange { llvm::APSInt MinVal; @@ -47,6 +49,8 @@ struct ValueRange { } }; +} // namespace + /// Return the number of EnumConstantDecls in an EnumDecl. static int enumLength(const EnumDecl *EnumDec) { return std::distance(EnumDec->enumerator_begin(), EnumDec->enumerator_end()); diff --git a/clang-tools-extra/clang-tidy/bugprone/UseAfterMoveCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/UseAfterMoveCheck.cpp index b2e08fe688a1b..1db56ce54a41e 100644 --- a/clang-tools-extra/clang-tidy/bugprone/UseAfterMoveCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/UseAfterMoveCheck.cpp @@ -397,12 +397,16 @@ void UseAfterMoveFinder::getReinits( } } +namespace { + enum MoveType { Forward = 0, // std::forward Move = 1, // std::move Invalidation = 2, // other }; +} // namespace + static MoveType determineMoveType(const FunctionDecl *FuncDecl) { if (FuncDecl->isInStdNamespace()) { if (FuncDecl->getName() == "move") diff --git a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp index 16d4be9802cc6..2d73e1e7c2e45 100644 --- a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp @@ -232,6 +232,7 @@ const llvm::StringRef CertErr33CCheckedFunctions = "^::aligned_alloc$;" namespace clang::tidy { namespace cert { +namespace { class CERTModule : public ClangTidyModule { public: @@ -360,6 +361,7 @@ class CERTModule : public ClangTidyModule { } }; +} // namespace } // namespace cert // Register the MiscTidyModule using this statically initialized variable. diff --git a/clang-tools-extra/clang-tidy/concurrency/ConcurrencyTidyModule.cpp b/clang-tools-extra/clang-tidy/concurrency/ConcurrencyTidyModule.cpp index 135a54d4565cb..dc40734fba88d 100644 --- a/clang-tools-extra/clang-tidy/concurrency/ConcurrencyTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/concurrency/ConcurrencyTidyModule.cpp @@ -14,6 +14,7 @@ namespace clang::tidy { namespace concurrency { +namespace { class ConcurrencyModule : public ClangTidyModule { public: @@ -25,6 +26,7 @@ class ConcurrencyModule : public ClangTidyModule { } }; +} // namespace } // namespace concurrency // Register the ConcurrencyTidyModule using this statically initialized diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp index 66639552276a2..f2d0f5e63172b 100644 --- a/clang-tools-extra/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp @@ -54,6 +54,7 @@ namespace clang::tidy { namespace cppcoreguidelines { +namespace { /// A module containing checks of the C++ Core Guidelines class CppCoreGuidelinesModule : public ClangTidyModule { @@ -154,6 +155,8 @@ class CppCoreGuidelinesModule : public ClangTidyModule { } }; +} // namespace + // Register the LLVMTidyModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<CppCoreGuidelinesModule> X("cppcoreguidelines-module", "Adds checks for the C++ Core Guidelines."); diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/PreferMemberInitializerCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/PreferMemberInitializerCheck.cpp index 51a1468f49813..f3e8d66a15102 100644 --- a/clang-tools-extra/clang-tidy/cppcoreguidelines/PreferMemberInitializerCheck.cpp +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/PreferMemberInitializerCheck.cpp @@ -95,11 +95,15 @@ static void updateAssignmentLevel( } } +namespace { + struct AssignmentPair { const FieldDecl *Field; const Expr *Init; }; +} // namespace + static std::optional<AssignmentPair> isAssignmentToMemberOf(const CXXRecordDecl *Rec, const Stmt *S, const CXXConstructorDecl *Ctor) { diff --git a/clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp b/clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp index 94d76e0dfbb6b..985bb842e4f8a 100644 --- a/clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp @@ -11,15 +11,18 @@ namespace clang::tidy { namespace custom { +namespace { class CustomModule : public ClangTidyModule { public: void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {} }; +} // namespace + // We need to register the checks more flexibly than builtin modules. The checks // will changed dynamically when switching to different source file. -extern void registerCustomChecks(const ClangTidyOptions &Options, +static void registerCustomChecks(const ClangTidyOptions &Options, ClangTidyCheckFactories &Factories) { static llvm::SmallSet<llvm::SmallString<32>, 8> CustomCheckNames{}; if (!Options.CustomChecks.has_value() || Options.CustomChecks->empty()) @@ -38,12 +41,16 @@ extern void registerCustomChecks(const ClangTidyOptions &Options, } } +namespace { + struct CustomChecksRegisterInitializer { CustomChecksRegisterInitializer() noexcept { RegisterCustomChecks = &custom::registerCustomChecks; } }; +} // namespace + static CustomChecksRegisterInitializer Init{}; } // namespace custom diff --git a/clang-tools-extra/clang-tidy/darwin/DarwinTidyModule.cpp b/clang-tools-extra/clang-tidy/darwin/DarwinTidyModule.cpp index 0330626a7cd58..9aa236b474513 100644 --- a/clang-tools-extra/clang-tidy/darwin/DarwinTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/darwin/DarwinTidyModule.cpp @@ -14,6 +14,7 @@ namespace clang::tidy { namespace darwin { +namespace { class DarwinModule : public ClangTidyModule { public: @@ -24,6 +25,7 @@ class DarwinModule : public ClangTidyModule { } }; +} // namespace } // namespace darwin // Register the DarwinTidyModule using this statically initialized variable. diff --git a/clang-tools-extra/clang-tidy/fuchsia/FuchsiaTidyModule.cpp b/clang-tools-extra/clang-tidy/fuchsia/FuchsiaTidyModule.cpp index 284f72a8f20fd..81d067a4d27c8 100644 --- a/clang-tools-extra/clang-tidy/fuchsia/FuchsiaTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/fuchsia/FuchsiaTidyModule.cpp @@ -23,6 +23,7 @@ using namespace clang::ast_matchers; namespace clang::tidy { namespace fuchsia { +namespace { /// This module is for Fuchsia-specific checks. class FuchsiaModule : public ClangTidyModule { @@ -48,6 +49,9 @@ class FuchsiaModule : public ClangTidyModule { "fuchsia-virtual-inheritance"); } }; + +} // namespace + // Register the FuchsiaTidyModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<FuchsiaModule> X("fuchsia-module", "Adds Fuchsia platform checks."); diff --git a/clang-tools-extra/clang-tidy/google/GoogleTidyModule.cpp b/clang-tools-extra/clang-tidy/google/GoogleTidyModule.cpp index ce46b3f641790..f293182218232 100644 --- a/clang-tools-extra/clang-tidy/google/GoogleTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/google/GoogleTidyModule.cpp @@ -34,6 +34,7 @@ using namespace clang::ast_matchers; namespace clang::tidy { namespace google { +namespace { class GoogleModule : public ClangTidyModule { public: @@ -95,6 +96,8 @@ class GoogleModule : public ClangTidyModule { } }; +} // namespace + // Register the GoogleTidyModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<GoogleModule> X("google-module", "Adds Google lint checks."); diff --git a/clang-tools-extra/clang-tidy/google/TodoCommentCheck.cpp b/clang-tools-extra/clang-tidy/google/TodoCommentCheck.cpp index 2789e4da320b2..f6a6811af006f 100644 --- a/clang-tools-extra/clang-tidy/google/TodoCommentCheck.cpp +++ b/clang-tools-extra/clang-tidy/google/TodoCommentCheck.cpp @@ -14,9 +14,11 @@ namespace clang::tidy { namespace google::readability { +namespace { enum class StyleKind { Parentheses, Hyphen }; +} // namespace } // namespace google::readability template <> struct OptionEnumMapping<google::readability::StyleKind> { diff --git a/clang-tools-extra/clang-tidy/hicpp/HICPPTidyModule.cpp b/clang-tools-extra/clang-tidy/hicpp/HICPPTidyModule.cpp index 9695eab51062b..9acd293bcf652 100644 --- a/clang-tools-extra/clang-tidy/hicpp/HICPPTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/hicpp/HICPPTidyModule.cpp @@ -43,6 +43,7 @@ namespace clang::tidy { namespace hicpp { +namespace { class HICPPModule : public ClangTidyModule { public: @@ -111,6 +112,8 @@ class HICPPModule : public ClangTidyModule { } }; +} // namespace + // Register the HICPPModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<HICPPModule> X("hicpp-module", "Adds High-Integrity C++ checks."); diff --git a/clang-tools-extra/clang-tidy/linuxkernel/LinuxKernelTidyModule.cpp b/clang-tools-extra/clang-tidy/linuxkernel/LinuxKernelTidyModule.cpp index 645d07426fee2..b3abc08ac7fc4 100644 --- a/clang-tools-extra/clang-tidy/linuxkernel/LinuxKernelTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/linuxkernel/LinuxKernelTidyModule.cpp @@ -13,6 +13,7 @@ namespace clang::tidy { namespace linuxkernel { +namespace { /// This module is for checks specific to the Linux kernel. class LinuxKernelModule : public ClangTidyModule { @@ -22,6 +23,9 @@ class LinuxKernelModule : public ClangTidyModule { "linuxkernel-must-check-errs"); } }; + +} // namespace + // Register the LinuxKernelTidyModule using this statically initialized // variable. static ClangTidyModuleRegistry::Add<LinuxKernelModule> diff --git a/clang-tools-extra/clang-tidy/llvm/LLVMTidyModule.cpp b/clang-tools-extra/clang-tidy/llvm/LLVMTidyModule.cpp index ed65cd1720457..acc942a125e11 100644 --- a/clang-tools-extra/clang-tidy/llvm/LLVMTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/llvm/LLVMTidyModule.cpp @@ -23,6 +23,7 @@ namespace clang::tidy { namespace llvm_check { +namespace { class LLVMModule : public ClangTidyModule { public: @@ -57,6 +58,8 @@ class LLVMModule : public ClangTidyModule { } }; +} // namespace + // Register the LLVMTidyModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<LLVMModule> X("llvm-module", "Adds LLVM lint checks."); diff --git a/clang-tools-extra/clang-tidy/llvmlibc/LLVMLibcTidyModule.cpp b/clang-tools-extra/clang-tidy/llvmlibc/LLVMLibcTidyModule.cpp index ded85939b75c8..bc0220ea721c0 100644 --- a/clang-tools-extra/clang-tidy/llvmlibc/LLVMLibcTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/llvmlibc/LLVMLibcTidyModule.cpp @@ -16,6 +16,7 @@ namespace clang::tidy { namespace llvm_libc { +namespace { class LLVMLibcModule : public ClangTidyModule { public: @@ -31,6 +32,8 @@ class LLVMLibcModule : public ClangTidyModule { } }; +} // namespace + // Register the LLVMLibcTidyModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<LLVMLibcModule> X("llvmlibc-module", "Adds LLVM libc standards checks."); diff --git a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp index 8c25e928667df..fcdaba277e87d 100644 --- a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp @@ -137,9 +137,13 @@ void ConstCorrectnessCheck::registerMatchers(MatchFinder *Finder) { Finder->addMatcher(FunctionScope, this); } +namespace { + /// Classify for a variable in what the Const-Check is interested. enum class VariableCategory { Value, Reference, Pointer }; +} // namespace + void ConstCorrectnessCheck::check(const MatchFinder::MatchResult &Result) { const auto *LocalScope = Result.Nodes.getNodeAs<Stmt>("scope"); const auto *Variable = Result.Nodes.getNodeAs<VarDecl>("local-value"); diff --git a/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp b/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp index 36e545e06bb6d..3f8d47a15a4d6 100644 --- a/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp @@ -38,6 +38,7 @@ namespace clang::tidy { namespace misc { +namespace { class MiscModule : public ClangTidyModule { public: @@ -92,6 +93,7 @@ class MiscModule : public ClangTidyModule { } }; +} // namespace } // namespace misc // Register the MiscTidyModule using this statically initialized variable. diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp index ce01a85f70fde..4c6de0b808c63 100644 --- a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp @@ -330,6 +330,8 @@ static StatementMatcher makePseudoArrayLoopMatcher() { .bind(LoopNamePseudoArray); } +namespace { + enum class IteratorCallKind { ICK_Member, ICK_ADL, @@ -343,6 +345,8 @@ struct ContainerCall { IteratorCallKind CallKind; }; +} // namespace + // Find the Expr likely initializing an iterator. // // Call is either a CXXMemberCallExpr ('c.begin()') or CallExpr of a free diff --git a/clang-tools-extra/clang-tidy/modernize/ModernizeTidyModule.cpp b/clang-tools-extra/clang-tidy/modernize/ModernizeTidyModule.cpp index a410f8da6af50..7224b2f32fd73 100644 --- a/clang-tools-extra/clang-tidy/modernize/ModernizeTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/modernize/ModernizeTidyModule.cpp @@ -60,6 +60,7 @@ using namespace clang::ast_matchers; namespace clang::tidy { namespace modernize { +namespace { class ModernizeModule : public ClangTidyModule { public: @@ -140,6 +141,8 @@ class ModernizeModule : public ClangTidyModule { } }; +} // namespace + // Register the ModernizeTidyModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<ModernizeModule> X("modernize-module", "Add modernize checks."); diff --git a/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp index 14874e32859e0..dd7539411f54b 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp @@ -21,12 +21,12 @@ using namespace clang::ast_matchers; namespace clang::tidy::modernize { +namespace { struct EnableIfData { TemplateSpecializationTypeLoc Loc; TypeLoc Outer; }; -namespace { AST_MATCHER(FunctionDecl, hasOtherDeclarations) { auto It = Node.redecls_begin(); auto EndIt = Node.redecls_end(); diff --git a/clang-tools-extra/clang-tidy/mpi/MPITidyModule.cpp b/clang-tools-extra/clang-tidy/mpi/MPITidyModule.cpp index f56cb29455007..577411e134bd4 100644 --- a/clang-tools-extra/clang-tidy/mpi/MPITidyModule.cpp +++ b/clang-tools-extra/clang-tidy/mpi/MPITidyModule.cpp @@ -14,6 +14,7 @@ namespace clang::tidy { namespace mpi { +namespace { class MPIModule : public ClangTidyModule { public: @@ -23,6 +24,7 @@ class MPIModule : public ClangTidyModule { } }; +} // namespace } // namespace mpi // Register the MPITidyModule using this statically initialized variable. diff --git a/clang-tools-extra/clang-tidy/objc/ObjCTidyModule.cpp b/clang-tools-extra/clang-tidy/objc/ObjCTidyModule.cpp index 411d252e3a4b7..1764f6876ef1d 100644 --- a/clang-tools-extra/clang-tidy/objc/ObjCTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/objc/ObjCTidyModule.cpp @@ -23,6 +23,7 @@ using namespace clang::ast_matchers; namespace clang::tidy { namespace objc { +namespace { class ObjCModule : public ClangTidyModule { public: @@ -45,6 +46,8 @@ class ObjCModule : public ClangTidyModule { } }; +} // namespace + // Register the ObjCTidyModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<ObjCModule> X("objc-module", "Adds Objective-C lint checks."); diff --git a/clang-tools-extra/clang-tidy/openmp/OpenMPTidyModule.cpp b/clang-tools-extra/clang-tidy/openmp/OpenMPTidyModule.cpp index b48fce670a041..3f2d72b28c2dc 100644 --- a/clang-tools-extra/clang-tidy/openmp/OpenMPTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/openmp/OpenMPTidyModule.cpp @@ -14,6 +14,7 @@ namespace clang::tidy { namespace openmp { +namespace { /// This module is for OpenMP-specific checks. class OpenMPModule : public ClangTidyModule { @@ -26,6 +27,8 @@ class OpenMPModule : public ClangTidyModule { } }; +} // namespace + // Register the OpenMPTidyModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<OpenMPModule> X("openmp-module", "Adds OpenMP-specific checks."); diff --git a/clang-tools-extra/clang-tidy/performance/PerformanceTidyModule.cpp b/clang-tools-extra/clang-tidy/performance/PerformanceTidyModule.cpp index 3497ea7316c6b..3914a6af90239 100644 --- a/clang-tools-extra/clang-tidy/performance/PerformanceTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/performance/PerformanceTidyModule.cpp @@ -31,6 +31,7 @@ namespace clang::tidy { namespace performance { +namespace { class PerformanceModule : public ClangTidyModule { public: @@ -73,6 +74,8 @@ class PerformanceModule : public ClangTidyModule { } }; +} // namespace + // Register the PerformanceModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<PerformanceModule> X("performance-module", "Adds performance checks."); diff --git a/clang-tools-extra/clang-tidy/plugin/ClangTidyPlugin.cpp b/clang-tools-extra/clang-tidy/plugin/ClangTidyPlugin.cpp index 778a8f33cf9cc..4431333906f7b 100644 --- a/clang-tools-extra/clang-tidy/plugin/ClangTidyPlugin.cpp +++ b/clang-tools-extra/clang-tidy/plugin/ClangTidyPlugin.cpp @@ -14,6 +14,7 @@ #include "clang/Frontend/MultiplexConsumer.h" namespace clang::tidy { +namespace { /// The core clang tidy plugin action. This just provides the AST consumer and /// command line flag parsing for using clang-tidy as a clang plugin. @@ -74,6 +75,8 @@ class ClangTidyPluginAction : public PluginASTAction { private: std::unique_ptr<ClangTidyContext> Context; }; + +} // namespace } // namespace clang::tidy // This anchor is used to force the linker to link in the generated object file diff --git a/clang-tools-extra/clang-tidy/portability/AvoidPragmaOnceCheck.cpp b/clang-tools-extra/clang-tidy/portability/AvoidPragmaOnceCheck.cpp index a946ebf1650fc..902579f1bf9e9 100644 --- a/clang-tools-extra/clang-tidy/portability/AvoidPragmaOnceCheck.cpp +++ b/clang-tools-extra/clang-tidy/portability/AvoidPragmaOnceCheck.cpp @@ -15,6 +15,8 @@ namespace clang::tidy::portability { +namespace { + class PragmaOnceCallbacks : public PPCallbacks { public: PragmaOnceCallbacks(AvoidPragmaOnceCheck *Check, const SourceManager &SM) @@ -38,6 +40,8 @@ class PragmaOnceCallbacks : public PPCallbacks { const SourceManager &SM; }; +} // namespace + void AvoidPragmaOnceCheck::registerPPCallbacks(const SourceManager &SM, Preprocessor *PP, Preprocessor *ModuleExpanderPP) { diff --git a/clang-tools-extra/clang-tidy/portability/PortabilityTidyModule.cpp b/clang-tools-extra/clang-tidy/portability/PortabilityTidyModule.cpp index e73e95455d3a5..9ff0883f5f375 100644 --- a/clang-tools-extra/clang-tidy/portability/PortabilityTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/portability/PortabilityTidyModule.cpp @@ -17,6 +17,7 @@ namespace clang::tidy { namespace portability { +namespace { class PortabilityModule : public ClangTidyModule { public: @@ -34,6 +35,8 @@ class PortabilityModule : public ClangTidyModule { } }; +} // namespace + // Register the PortabilityModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<PortabilityModule> X("portability-module", "Adds portability-related checks."); diff --git a/clang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp b/clang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp index afb63571de583..85b4fa322b263 100644 --- a/clang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp @@ -68,6 +68,7 @@ namespace clang::tidy { namespace readability { +namespace { class ReadabilityModule : public ClangTidyModule { public: @@ -187,6 +188,8 @@ class ReadabilityModule : public ClangTidyModule { } }; +} // namespace + // Register the ReadabilityModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<ReadabilityModule> X("readability-module", "Adds readability-related checks."); diff --git a/clang-tools-extra/clang-tidy/zircon/ZirconTidyModule.cpp b/clang-tools-extra/clang-tidy/zircon/ZirconTidyModule.cpp index 30db5e251001f..84e5c61120253 100644 --- a/clang-tools-extra/clang-tidy/zircon/ZirconTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/zircon/ZirconTidyModule.cpp @@ -13,6 +13,7 @@ namespace clang::tidy { namespace zircon { +namespace { /// This module is for Zircon-specific checks. class ZirconModule : public ClangTidyModule { @@ -23,6 +24,8 @@ class ZirconModule : public ClangTidyModule { } }; +} // namespace + // Register the ZirconTidyModule using this statically initialized variable. static ClangTidyModuleRegistry::Add<ZirconModule> X("zircon-module", "Adds Zircon kernel checks (deprecated in LLVM 24)."); >From f5baf7e61393d0f12a2c75d0eecf1088a338d076 Mon Sep 17 00:00:00 2001 From: Victor Chernyakin <[email protected]> Date: Fri, 19 Dec 2025 08:29:33 -0800 Subject: [PATCH 2/2] Merge two anonymous namespaces --- .../clang-tidy/custom/CustomTidyModule.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp b/clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp index 985bb842e4f8a..2f354f77723e4 100644 --- a/clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp +++ b/clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp @@ -11,14 +11,6 @@ namespace clang::tidy { namespace custom { -namespace { - -class CustomModule : public ClangTidyModule { -public: - void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {} -}; - -} // namespace // We need to register the checks more flexibly than builtin modules. The checks // will changed dynamically when switching to different source file. @@ -49,6 +41,11 @@ struct CustomChecksRegisterInitializer { } }; +class CustomModule : public ClangTidyModule { +public: + void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {} +}; + } // namespace static CustomChecksRegisterInitializer Init{}; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
