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

Reply via email to