[clang-tools-extra] [clang-tidy][NFC] fix 'misc-use-internal-linkage' check warnings (PR #143482)
Baranov Victor via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 10 08:31:05 PDT 2025
https://github.com/vbvictor updated https://github.com/llvm/llvm-project/pull/143482
>From 3c4c5d5b5fa85c4aa76b5ee6d654a4556c2d1e0b Mon Sep 17 00:00:00 2001
From: Victor Baranov <bar.victor.2002 at gmail.com>
Date: Tue, 10 Jun 2025 09:39:49 +0300
Subject: [PATCH 1/3] [clang-tidy] fix 'misc-internal-linkage' check warnings
---
.../clang-tidy/abseil/AbseilTidyModule.cpp | 2 +-
.../clang-tidy/abseil/CleanupCtadCheck.cpp | 2 +-
.../clang-tidy/abseil/StrCatAppendCheck.cpp | 6 ++--
.../abseil/StringFindStrContainsCheck.cpp | 2 ++
.../clang-tidy/altera/AlteraTidyModule.cpp | 2 +-
.../clang-tidy/android/AndroidTidyModule.cpp | 2 +-
.../clang-tidy/boost/BoostTidyModule.cpp | 2 +-
.../clang-tidy/bugprone/BranchCloneCheck.cpp | 1 +
.../bugprone/BugproneTidyModule.cpp | 1 +
.../DynamicStaticInitializersCheck.cpp | 4 +++
.../EasilySwappableParametersCheck.cpp | 13 ++++++--
.../bugprone/IncDecInConditionsCheck.cpp | 4 +++
.../MultipleNewInOneExpressionCheck.cpp | 4 +--
.../bugprone/StandaloneEmptyCheck.cpp | 3 +-
.../bugprone/StringviewNullptrCheck.cpp | 2 +-
.../bugprone/UnhandledExceptionAtNewCheck.cpp | 3 ++
.../clang-tidy/bugprone/UnusedRaiiCheck.cpp | 4 +--
.../clang-tidy/bugprone/UseAfterMoveCheck.cpp | 2 +-
.../clang-tidy/cert/CERTTidyModule.cpp | 2 +-
.../concurrency/ConcurrencyTidyModule.cpp | 1 +
.../CppCoreGuidelinesTidyModule.cpp | 1 +
.../VirtualClassDestructorCheck.cpp | 4 +++
.../clang-tidy/darwin/DarwinTidyModule.cpp | 2 +-
.../clang-tidy/fuchsia/FuchsiaTidyModule.cpp | 2 +-
.../clang-tidy/google/GoogleTidyModule.cpp | 2 +-
.../clang-tidy/hicpp/HICPPTidyModule.cpp | 2 +-
.../linuxkernel/LinuxKernelTidyModule.cpp | 1 +
.../clang-tidy/llvm/LLVMTidyModule.cpp | 2 +-
.../PreferIsaOrDynCastInConditionalsCheck.cpp | 12 +++----
.../llvmlibc/CalleeNamespaceCheck.cpp | 2 +-
.../llvmlibc/LLVMLibcTidyModule.cpp | 1 +
.../clang-tidy/misc/MiscTidyModule.cpp | 4 +--
.../clang-tidy/modernize/AvoidBindCheck.cpp | 6 ++--
.../clang-tidy/modernize/LoopConvertCheck.cpp | 6 ++--
.../modernize/ModernizeTidyModule.cpp | 1 +
.../modernize/RedundantVoidArgCheck.cpp | 3 +-
.../modernize/UseConstraintsCheck.cpp | 2 +-
.../modernize/UseEqualsDefaultCheck.cpp | 4 +--
.../modernize/UseStartsEndsWithCheck.cpp | 4 +++
.../clang-tidy/mpi/MPITidyModule.cpp | 2 +-
.../clang-tidy/objc/NSDateFormatterCheck.cpp | 2 +-
.../clang-tidy/objc/ObjCTidyModule.cpp | 2 +-
.../clang-tidy/openmp/OpenMPTidyModule.cpp | 2 +-
.../performance/MoveConstArgCheck.cpp | 6 ++--
.../performance/PerformanceTidyModule.cpp | 1 +
.../clang-tidy/plugin/ClangTidyPlugin.cpp | 1 +
.../portability/PortabilityTidyModule.cpp | 1 +
.../readability/ContainerSizeEmptyCheck.cpp | 31 ++++++++++---------
.../ConvertMemberFunctionsToStatic.cpp | 4 +++
.../MakeMemberFunctionConstCheck.cpp | 4 +++
.../readability/ReadabilityTidyModule.cpp | 1 +
.../readability/RedundantDeclarationCheck.cpp | 4 +++
.../RedundantInlineSpecifierCheck.cpp | 4 +--
.../clang-tidy/tool/ClangTidyMain.cpp | 2 +-
.../clang-tidy/utils/NamespaceAliaser.cpp | 11 ++++---
.../utils/TransformerClangTidyCheck.cpp | 2 +-
.../zircon/TemporaryObjectsCheck.cpp | 4 +++
.../clang-tidy/zircon/ZirconTidyModule.cpp | 2 +-
58 files changed, 133 insertions(+), 76 deletions(-)
diff --git a/clang-tools-extra/clang-tidy/abseil/AbseilTidyModule.cpp b/clang-tools-extra/clang-tidy/abseil/AbseilTidyModule.cpp
index c5c42908d0c59..78605d59b4421 100644
--- a/clang-tools-extra/clang-tidy/abseil/AbseilTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/abseil/AbseilTidyModule.cpp
@@ -80,6 +80,6 @@ static ClangTidyModuleRegistry::Add<AbseilModule> X("abseil-module",
// This anchor is used to force the linker to link in the generated object file
// and thus register the AbseilModule.
-volatile int AbseilModuleAnchorSource = 0;
+volatile int AbseilModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/abseil/CleanupCtadCheck.cpp b/clang-tools-extra/clang-tidy/abseil/CleanupCtadCheck.cpp
index 0819642be0558..8063fc540cce5 100644
--- a/clang-tools-extra/clang-tidy/abseil/CleanupCtadCheck.cpp
+++ b/clang-tools-extra/clang-tidy/abseil/CleanupCtadCheck.cpp
@@ -18,7 +18,7 @@ using namespace ::clang::transformer;
namespace clang::tidy::abseil {
-RewriteRuleWith<std::string> cleanupCtadCheckImpl() {
+static RewriteRuleWith<std::string> cleanupCtadCheckImpl() {
auto WarningMessage = cat("prefer absl::Cleanup's class template argument "
"deduction pattern in C++17 and higher");
diff --git a/clang-tools-extra/clang-tidy/abseil/StrCatAppendCheck.cpp b/clang-tools-extra/clang-tidy/abseil/StrCatAppendCheck.cpp
index 6025d3d66675a..ced92590be02e 100644
--- a/clang-tools-extra/clang-tidy/abseil/StrCatAppendCheck.cpp
+++ b/clang-tools-extra/clang-tidy/abseil/StrCatAppendCheck.cpp
@@ -17,7 +17,7 @@ namespace clang::tidy::abseil {
namespace {
// Skips any combination of temporary materialization, temporary binding and
// implicit casting.
-AST_MATCHER_P(Stmt, IgnoringTemporaries, ast_matchers::internal::Matcher<Stmt>,
+AST_MATCHER_P(Stmt, ignoringTemporaries, ast_matchers::internal::Matcher<Stmt>,
InnerMatcher) {
const Stmt *E = &Node;
while (true) {
@@ -43,7 +43,7 @@ void StrCatAppendCheck::registerMatchers(MatchFinder *Finder) {
const auto StrCat = functionDecl(hasName("::absl::StrCat"));
// The arguments of absl::StrCat are implicitly converted to AlphaNum. This
// matches to the arguments because of that behavior.
- const auto AlphaNum = IgnoringTemporaries(cxxConstructExpr(
+ const auto AlphaNum = ignoringTemporaries(cxxConstructExpr(
argumentCountIs(1), hasType(cxxRecordDecl(hasName("::absl::AlphaNum"))),
hasArgument(0, ignoringImpCasts(declRefExpr(to(equalsBoundNode("LHS")),
expr().bind("Arg0"))))));
@@ -62,7 +62,7 @@ void StrCatAppendCheck::registerMatchers(MatchFinder *Finder) {
hasOverloadedOperatorName("="),
hasArgument(0, declRefExpr(to(decl().bind("LHS")))),
hasArgument(
- 1, IgnoringTemporaries(
+ 1, ignoringTemporaries(
callExpr(callee(StrCat), hasArgument(0, AlphaNum),
unless(HasAnotherReferenceToLhs))
.bind("Call"))))
diff --git a/clang-tools-extra/clang-tidy/abseil/StringFindStrContainsCheck.cpp b/clang-tools-extra/clang-tidy/abseil/StringFindStrContainsCheck.cpp
index 6e89783bb51eb..0c2fe285ce060 100644
--- a/clang-tools-extra/clang-tidy/abseil/StringFindStrContainsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/abseil/StringFindStrContainsCheck.cpp
@@ -29,7 +29,9 @@ using ::clang::transformer::makeRule;
using ::clang::transformer::node;
using ::clang::transformer::RewriteRuleWith;
+namespace {
AST_MATCHER(Type, isCharType) { return Node.isCharType(); }
+} // namespace
static const char DefaultStringLikeClasses[] = "::std::basic_string;"
"::std::basic_string_view;"
diff --git a/clang-tools-extra/clang-tidy/altera/AlteraTidyModule.cpp b/clang-tools-extra/clang-tidy/altera/AlteraTidyModule.cpp
index 21610c7d1eced..02a43ba86d7bb 100644
--- a/clang-tools-extra/clang-tidy/altera/AlteraTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/altera/AlteraTidyModule.cpp
@@ -43,6 +43,6 @@ static ClangTidyModuleRegistry::Add<altera::AlteraModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the AlteraModule.
-volatile int AlteraModuleAnchorSource = 0;
+volatile int AlteraModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/android/AndroidTidyModule.cpp b/clang-tools-extra/clang-tidy/android/AndroidTidyModule.cpp
index 1cc17daded903..17efa10909d0a 100644
--- a/clang-tools-extra/clang-tidy/android/AndroidTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/android/AndroidTidyModule.cpp
@@ -67,6 +67,6 @@ static ClangTidyModuleRegistry::Add<AndroidModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the AndroidModule.
-volatile int AndroidModuleAnchorSource = 0;
+volatile int AndroidModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/boost/BoostTidyModule.cpp b/clang-tools-extra/clang-tidy/boost/BoostTidyModule.cpp
index 79d0e380e402d..f414fe750d023 100644
--- a/clang-tools-extra/clang-tidy/boost/BoostTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/boost/BoostTidyModule.cpp
@@ -32,6 +32,6 @@ static ClangTidyModuleRegistry::Add<BoostModule> X("boost-module",
// This anchor is used to force the linker to link in the generated object file
// and thus register the BoostModule.
-volatile int BoostModuleAnchorSource = 0;
+volatile int BoostModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp
index 0b76cfb2ad8dc..a6cd68edda55e 100644
--- a/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp
@@ -62,6 +62,7 @@ static bool isFallthroughSwitchBranch(const SwitchBranch &Branch) {
return true; // Ignore sub-switches
}
+ // NOLINTNEXTLINE(readability-identifier-naming) - FIXME
bool TraverseSwitchCase(SwitchCase *, DataRecursionQueue * = nullptr) {
return true; // Ignore cases
}
diff --git a/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp b/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp
index 64f4a524daf0d..ed1fd138d8f1b 100644
--- a/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/BugproneTidyModule.cpp
@@ -291,6 +291,7 @@ static ClangTidyModuleRegistry::Add<bugprone::BugproneModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the BugproneModule.
+// NOLINTNEXTLINE(misc-use-internal-linkage)
volatile int BugproneModuleAnchorSource = 0;
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.cpp
index d99e17c691485..3fe028b94771d 100644
--- a/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/DynamicStaticInitializersCheck.cpp
@@ -15,6 +15,8 @@ using namespace clang::ast_matchers;
namespace clang::tidy::bugprone {
+namespace {
+
AST_MATCHER(clang::VarDecl, hasConstantDeclaration) {
const Expr *Init = Node.getInit();
if (Init && !Init->isValueDependent()) {
@@ -25,6 +27,8 @@ AST_MATCHER(clang::VarDecl, hasConstantDeclaration) {
return false;
}
+} // namespace
+
DynamicStaticInitializersCheck::DynamicStaticInitializersCheck(
StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
diff --git a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
index 10868129e76da..e3f4b7cca18a1 100644
--- a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
@@ -1497,11 +1497,13 @@ static MixableParameterRange modelMixingRange(
} // namespace model
+namespace {
/// Matches DeclRefExprs and their ignorable wrappers to ParmVarDecls.
AST_MATCHER_FUNCTION(ast_matchers::internal::Matcher<Stmt>, paramRefExpr) {
return expr(ignoringParenImpCasts(ignoringElidableConstructorCall(
declRefExpr(to(parmVarDecl().bind("param"))))));
}
+} // namespace
namespace filter {
@@ -1574,8 +1576,8 @@ using ParamToSmallSetMap =
/// Returns whether the sets mapped to the two elements in the map have at
/// least one element in common.
template <typename MapTy, typename ElemTy>
-bool lazyMapOfSetsIntersectionExists(const MapTy &Map, const ElemTy &E1,
- const ElemTy &E2) {
+static bool lazyMapOfSetsIntersectionExists(const MapTy &Map, const ElemTy &E1,
+ const ElemTy &E2) {
auto E1Iterator = Map.find(E1);
auto E2Iterator = Map.find(E2);
if (E1Iterator == Map.end() || E2Iterator == Map.end())
@@ -1882,6 +1884,8 @@ static bool prefixSuffixCoverUnderThreshold(std::size_t Threshold,
} // namespace filter
+namespace {
+
/// Matches functions that have at least the specified amount of parameters.
AST_MATCHER_P(FunctionDecl, parameterCountGE, unsigned, N) {
return Node.getNumParams() >= N;
@@ -1904,13 +1908,16 @@ AST_MATCHER(FunctionDecl, isOverloadedUnaryOrBinaryOperator) {
}
}
+} // namespace
+
/// Returns the DefaultMinimumLength if the Value of requested minimum length
/// is less than 2. Minimum lengths of 0 or 1 are not accepted.
static inline unsigned clampMinimumLength(const unsigned Value) {
return Value < 2 ? DefaultMinimumLength : Value;
}
-// FIXME: Maybe unneeded, getNameForDiagnostic() is expected to change to return
+// FIXME: Maybe unneeded, getNameForDiagnostic() is expected to change to
+// return
// a crafted location when the node itself is unnamed. (See D84658, D85033.)
/// Returns the diagnostic-friendly name of the node, or empty string.
static SmallString<64> getName(const NamedDecl *ND) {
diff --git a/clang-tools-extra/clang-tidy/bugprone/IncDecInConditionsCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/IncDecInConditionsCheck.cpp
index 9b3b01eb02683..73bffe93146e6 100644
--- a/clang-tools-extra/clang-tidy/bugprone/IncDecInConditionsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/IncDecInConditionsCheck.cpp
@@ -15,6 +15,8 @@ using namespace clang::ast_matchers;
namespace clang::tidy::bugprone {
+namespace {
+
AST_MATCHER(BinaryOperator, isLogicalOperator) { return Node.isLogicalOp(); }
AST_MATCHER(UnaryOperator, isUnaryPrePostOperator) {
@@ -26,6 +28,8 @@ AST_MATCHER(CXXOperatorCallExpr, isPrePostOperator) {
Node.getOperator() == OO_MinusMinus;
}
+} // namespace
+
void IncDecInConditionsCheck::registerMatchers(MatchFinder *Finder) {
auto OperatorMatcher = expr(
anyOf(binaryOperator(anyOf(isComparisonOperator(), isLogicalOperator())),
diff --git a/clang-tools-extra/clang-tidy/bugprone/MultipleNewInOneExpressionCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/MultipleNewInOneExpressionCheck.cpp
index 6d75a8262b5bc..b68888cb5b928 100644
--- a/clang-tools-extra/clang-tidy/bugprone/MultipleNewInOneExpressionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/MultipleNewInOneExpressionCheck.cpp
@@ -49,8 +49,6 @@ bool isExprValueStored(const Expr *E, ASTContext &C) {
return isa<CallExpr, CXXConstructExpr>(ParentE);
}
-} // namespace
-
AST_MATCHER_P(CXXTryStmt, hasHandlerFor,
ast_matchers::internal::Matcher<QualType>, InnerMatcher) {
for (unsigned NH = Node.getNumHandlers(), I = 0; I < NH; ++I) {
@@ -74,6 +72,8 @@ AST_MATCHER(CXXNewExpr, mayThrow) {
return !OperatorNew->getType()->castAs<FunctionProtoType>()->isNothrow();
}
+} // namespace
+
void MultipleNewInOneExpressionCheck::registerMatchers(MatchFinder *Finder) {
auto BadAllocType =
recordType(hasDeclaration(cxxRecordDecl(hasName("::std::bad_alloc"))));
diff --git a/clang-tools-extra/clang-tidy/bugprone/StandaloneEmptyCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/StandaloneEmptyCheck.cpp
index 682478ecead0b..5d9e91e0b82c7 100644
--- a/clang-tools-extra/clang-tidy/bugprone/StandaloneEmptyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/StandaloneEmptyCheck.cpp
@@ -46,7 +46,8 @@ using ast_matchers::stmtExpr;
using ast_matchers::unless;
using ast_matchers::voidType;
-const Expr *getCondition(const BoundNodes &Nodes, const StringRef NodeId) {
+static const Expr *getCondition(const BoundNodes &Nodes,
+ const StringRef NodeId) {
const auto *If = Nodes.getNodeAs<IfStmt>(NodeId);
if (If != nullptr)
return If->getCond();
diff --git a/clang-tools-extra/clang-tidy/bugprone/StringviewNullptrCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/StringviewNullptrCheck.cpp
index f944ae6c5b9e3..20789b3123e2f 100644
--- a/clang-tools-extra/clang-tidy/bugprone/StringviewNullptrCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/StringviewNullptrCheck.cpp
@@ -33,7 +33,7 @@ AST_MATCHER(clang::VarDecl, isDirectInitialization) {
} // namespace
-RewriteRuleWith<std::string> stringviewNullptrCheckImpl() {
+static RewriteRuleWith<std::string> stringviewNullptrCheckImpl() {
auto ConstructionWarning =
cat("constructing basic_string_view from null is undefined; replace with "
"the default constructor");
diff --git a/clang-tools-extra/clang-tidy/bugprone/UnhandledExceptionAtNewCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/UnhandledExceptionAtNewCheck.cpp
index ca4562aa9a44f..5e220017c97f4 100644
--- a/clang-tools-extra/clang-tidy/bugprone/UnhandledExceptionAtNewCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/UnhandledExceptionAtNewCheck.cpp
@@ -12,6 +12,7 @@
using namespace clang::ast_matchers;
namespace clang::tidy::bugprone {
+namespace {
AST_MATCHER_P(CXXTryStmt, hasHandlerFor,
ast_matchers::internal::Matcher<QualType>, InnerMatcher) {
@@ -36,6 +37,8 @@ AST_MATCHER(CXXNewExpr, mayThrow) {
return !OperatorNew->getType()->castAs<FunctionProtoType>()->isNothrow();
}
+} // namespace
+
UnhandledExceptionAtNewCheck::UnhandledExceptionAtNewCheck(
StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context) {}
diff --git a/clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp
index d96e7524172bd..b17d3868dd76a 100644
--- a/clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/UnusedRaiiCheck.cpp
@@ -37,8 +37,8 @@ void UnusedRaiiCheck::registerMatchers(MatchFinder *Finder) {
}
template <typename T>
-void reportDiagnostic(DiagnosticBuilder D, const T *Node, SourceRange SR,
- bool DefaultConstruction) {
+static void reportDiagnostic(DiagnosticBuilder D, const T *Node, SourceRange SR,
+ bool DefaultConstruction) {
const char *Replacement = " give_me_a_name";
// If this is a default ctor we have to remove the parens or we'll introduce a
diff --git a/clang-tools-extra/clang-tidy/bugprone/UseAfterMoveCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/UseAfterMoveCheck.cpp
index 960133159dbbf..1bcacf96a4129 100644
--- a/clang-tools-extra/clang-tidy/bugprone/UseAfterMoveCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/UseAfterMoveCheck.cpp
@@ -242,7 +242,7 @@ void UseAfterMoveFinder::getUsesAndReinits(
});
}
-bool isStandardSmartPointer(const ValueDecl *VD) {
+static bool isStandardSmartPointer(const ValueDecl *VD) {
const Type *TheType = VD->getType().getNonReferenceType().getTypePtrOrNull();
if (!TheType)
return false;
diff --git a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp
index 6614b10d4ce40..66fedabaf3ca6 100644
--- a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp
@@ -358,6 +358,6 @@ static ClangTidyModuleRegistry::Add<cert::CERTModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the CERTModule.
-volatile int CERTModuleAnchorSource = 0;
+volatile int CERTModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/concurrency/ConcurrencyTidyModule.cpp b/clang-tools-extra/clang-tidy/concurrency/ConcurrencyTidyModule.cpp
index 8d74d0332df82..6c58c506dc903 100644
--- a/clang-tools-extra/clang-tidy/concurrency/ConcurrencyTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/concurrency/ConcurrencyTidyModule.cpp
@@ -34,6 +34,7 @@ static ClangTidyModuleRegistry::Add<concurrency::ConcurrencyModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the ConcurrencyModule.
+// NOLINTNEXTLINE(misc-use-internal-linkage)
volatile int ConcurrencyModuleAnchorSource = 0;
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp
index 6adef04264347..4dd9b0904f075 100644
--- a/clang-tools-extra/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp
@@ -156,6 +156,7 @@ static ClangTidyModuleRegistry::Add<CppCoreGuidelinesModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the CppCoreGuidelinesModule.
+// NOLINTNEXTLINE(misc-use-internal-linkage)
volatile int CppCoreGuidelinesModuleAnchorSource = 0;
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/VirtualClassDestructorCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/VirtualClassDestructorCheck.cpp
index aa70b3896f16d..e31d046565677 100644
--- a/clang-tools-extra/clang-tidy/cppcoreguidelines/VirtualClassDestructorCheck.cpp
+++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/VirtualClassDestructorCheck.cpp
@@ -18,6 +18,8 @@ using namespace clang::ast_matchers;
namespace clang::tidy::cppcoreguidelines {
+namespace {
+
AST_MATCHER(CXXRecordDecl, hasPublicVirtualOrProtectedNonVirtualDestructor) {
// We need to call Node.getDestructor() instead of matching a
// CXXDestructorDecl. Otherwise, tests will fail for class templates, since
@@ -33,6 +35,8 @@ AST_MATCHER(CXXRecordDecl, hasPublicVirtualOrProtectedNonVirtualDestructor) {
!Destructor->isVirtual()));
}
+} // namespace
+
void VirtualClassDestructorCheck::registerMatchers(MatchFinder *Finder) {
ast_matchers::internal::Matcher<CXXRecordDecl> InheritsVirtualMethod =
hasAnyBase(hasType(cxxRecordDecl(has(cxxMethodDecl(isVirtual())))));
diff --git a/clang-tools-extra/clang-tidy/darwin/DarwinTidyModule.cpp b/clang-tools-extra/clang-tidy/darwin/DarwinTidyModule.cpp
index 616a2a2a85c56..bc8c91a9ed413 100644
--- a/clang-tools-extra/clang-tidy/darwin/DarwinTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/darwin/DarwinTidyModule.cpp
@@ -32,6 +32,6 @@ static ClangTidyModuleRegistry::Add<darwin::DarwinModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the DarwinModule.
-volatile int DarwinModuleAnchorSource = 0;
+volatile int DarwinModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/fuchsia/FuchsiaTidyModule.cpp b/clang-tools-extra/clang-tidy/fuchsia/FuchsiaTidyModule.cpp
index 45a79b75e0937..d7a70b39bdc55 100644
--- a/clang-tools-extra/clang-tidy/fuchsia/FuchsiaTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/fuchsia/FuchsiaTidyModule.cpp
@@ -52,6 +52,6 @@ static ClangTidyModuleRegistry::Add<FuchsiaModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the FuchsiaModule.
-volatile int FuchsiaModuleAnchorSource = 0;
+volatile int FuchsiaModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/google/GoogleTidyModule.cpp b/clang-tools-extra/clang-tidy/google/GoogleTidyModule.cpp
index 5b783c40ddb34..5343e2b3a5975 100644
--- a/clang-tools-extra/clang-tidy/google/GoogleTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/google/GoogleTidyModule.cpp
@@ -100,6 +100,6 @@ static ClangTidyModuleRegistry::Add<GoogleModule> X("google-module",
// This anchor is used to force the linker to link in the generated object file
// and thus register the GoogleModule.
-volatile int GoogleModuleAnchorSource = 0;
+volatile int GoogleModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/hicpp/HICPPTidyModule.cpp b/clang-tools-extra/clang-tidy/hicpp/HICPPTidyModule.cpp
index 38f3ab5ae85d3..65a56be3e5a05 100644
--- a/clang-tools-extra/clang-tidy/hicpp/HICPPTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/hicpp/HICPPTidyModule.cpp
@@ -119,6 +119,6 @@ static ClangTidyModuleRegistry::Add<HICPPModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the HICPPModule.
-volatile int HICPPModuleAnchorSource = 0;
+volatile int HICPPModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/linuxkernel/LinuxKernelTidyModule.cpp b/clang-tools-extra/clang-tidy/linuxkernel/LinuxKernelTidyModule.cpp
index e6d64ff61d261..b8b75b7ccaefe 100644
--- a/clang-tools-extra/clang-tidy/linuxkernel/LinuxKernelTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/linuxkernel/LinuxKernelTidyModule.cpp
@@ -30,6 +30,7 @@ static ClangTidyModuleRegistry::Add<LinuxKernelModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the LinuxKernelModule.
+// NOLINTNEXTLINE(misc-use-internal-linkage)
volatile int LinuxKernelModuleAnchorSource = 0;
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/llvm/LLVMTidyModule.cpp b/clang-tools-extra/clang-tidy/llvm/LLVMTidyModule.cpp
index e749163699b34..ceebde1595e7f 100644
--- a/clang-tools-extra/clang-tidy/llvm/LLVMTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/llvm/LLVMTidyModule.cpp
@@ -57,6 +57,6 @@ static ClangTidyModuleRegistry::Add<LLVMModule> X("llvm-module",
// This anchor is used to force the linker to link in the generated object file
// and thus register the LLVMModule.
-volatile int LLVMModuleAnchorSource = 0;
+volatile int LLVMModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/llvm/PreferIsaOrDynCastInConditionalsCheck.cpp b/clang-tools-extra/clang-tidy/llvm/PreferIsaOrDynCastInConditionalsCheck.cpp
index 9333337777705..4c138bcc564d8 100644
--- a/clang-tools-extra/clang-tidy/llvm/PreferIsaOrDynCastInConditionalsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/llvm/PreferIsaOrDynCastInConditionalsCheck.cpp
@@ -14,12 +14,11 @@
using namespace clang::ast_matchers;
-namespace clang {
-namespace ast_matchers {
-AST_MATCHER(Expr, isMacroID) { return Node.getExprLoc().isMacroID(); }
-} // namespace ast_matchers
+namespace clang::tidy::llvm_check {
-namespace tidy::llvm_check {
+namespace {
+AST_MATCHER(Expr, isMacroID) { return Node.getExprLoc().isMacroID(); }
+} // namespace
void PreferIsaOrDynCastInConditionalsCheck::registerMatchers(
MatchFinder *Finder) {
@@ -125,5 +124,4 @@ void PreferIsaOrDynCastInConditionalsCheck::check(
}
}
-} // namespace tidy::llvm_check
-} // namespace clang
+} // namespace clang::tidy::llvm_check
diff --git a/clang-tools-extra/clang-tidy/llvmlibc/CalleeNamespaceCheck.cpp b/clang-tools-extra/clang-tidy/llvmlibc/CalleeNamespaceCheck.cpp
index d14cd2721d9a1..4bc4d5a4691f0 100644
--- a/clang-tools-extra/clang-tidy/llvmlibc/CalleeNamespaceCheck.cpp
+++ b/clang-tools-extra/clang-tidy/llvmlibc/CalleeNamespaceCheck.cpp
@@ -19,7 +19,7 @@ namespace clang::tidy::llvm_libc {
// Gets the outermost namespace of a DeclContext, right under the Translation
// Unit.
-const DeclContext *getOutermostNamespace(const DeclContext *Decl) {
+static const DeclContext *getOutermostNamespace(const DeclContext *Decl) {
const DeclContext *Parent = Decl->getParent();
if (Parent->isTranslationUnit())
return Decl;
diff --git a/clang-tools-extra/clang-tidy/llvmlibc/LLVMLibcTidyModule.cpp b/clang-tools-extra/clang-tidy/llvmlibc/LLVMLibcTidyModule.cpp
index 7f26840be7372..562d71a0891c4 100644
--- a/clang-tools-extra/clang-tidy/llvmlibc/LLVMLibcTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/llvmlibc/LLVMLibcTidyModule.cpp
@@ -39,6 +39,7 @@ static ClangTidyModuleRegistry::Add<LLVMLibcModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the LLVMLibcModule.
+// NOLINTNEXTLINE(misc-use-internal-linkage)
volatile int LLVMLibcModuleAnchorSource = 0;
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp b/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
index 54bcebca7e186..198aa48a5dca5 100644
--- a/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
@@ -92,6 +92,6 @@ static ClangTidyModuleRegistry::Add<misc::MiscModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the MiscModule.
-volatile int MiscModuleAnchorSource = 0;
+volatile int MiscModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
-} // namespace clang::tidy
+} // namespace clang::tidy
\ No newline at end of file
diff --git a/clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp b/clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp
index a41524af56800..c9477327742d7 100644
--- a/clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp
@@ -452,8 +452,8 @@ static bool isFixitSupported(const CallableInfo &Callee,
return true;
}
-const FunctionDecl *getCallOperator(const CXXRecordDecl *Callable,
- size_t NumArgs) {
+static const FunctionDecl *getCallOperator(const CXXRecordDecl *Callable,
+ size_t NumArgs) {
std::vector<const FunctionDecl *> Candidates =
findCandidateCallOperators(Callable, NumArgs);
if (Candidates.size() != 1)
@@ -462,7 +462,7 @@ const FunctionDecl *getCallOperator(const CXXRecordDecl *Callable,
return Candidates.front();
}
-const FunctionDecl *
+static const FunctionDecl *
getCallMethodDecl(const MatchFinder::MatchResult &Result, CallableType Type,
CallableMaterializationKind Materialization) {
diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
index eb11ae6162028..6c6c626ec4fed 100644
--- a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
@@ -114,7 +114,7 @@ arrayConditionMatcher(internal::Matcher<Expr> LimitExpr) {
/// Client code will need to make sure that:
/// - The index variable is only used as an array index.
/// - All arrays indexed by the loop are the same.
-StatementMatcher makeArrayLoopMatcher() {
+static StatementMatcher makeArrayLoopMatcher() {
StatementMatcher ArrayBoundMatcher =
expr(hasType(isInteger())).bind(ConditionBoundName);
@@ -155,7 +155,7 @@ StatementMatcher makeArrayLoopMatcher() {
///
/// Client code will need to make sure that:
/// - The two containers on which 'begin' and 'end' are called are the same.
-StatementMatcher makeIteratorLoopMatcher(bool IsReverse) {
+static StatementMatcher makeIteratorLoopMatcher(bool IsReverse) {
auto BeginNameMatcher = IsReverse ? hasAnyName("rbegin", "crbegin")
: hasAnyName("begin", "cbegin");
@@ -267,7 +267,7 @@ StatementMatcher makeIteratorLoopMatcher(bool IsReverse) {
/// - The index variable is only used in overloaded operator[] or
/// container.at().
/// - The container's iterators would not be invalidated during the loop.
-StatementMatcher makePseudoArrayLoopMatcher() {
+static StatementMatcher makePseudoArrayLoopMatcher() {
// Test that the incoming type has a record declaration that has methods
// called 'begin' and 'end'. If the incoming type is const, then make sure
// these methods are also marked const.
diff --git a/clang-tools-extra/clang-tidy/modernize/ModernizeTidyModule.cpp b/clang-tools-extra/clang-tidy/modernize/ModernizeTidyModule.cpp
index e872759856f3c..0cf59b6e0216a 100644
--- a/clang-tools-extra/clang-tidy/modernize/ModernizeTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/ModernizeTidyModule.cpp
@@ -136,6 +136,7 @@ static ClangTidyModuleRegistry::Add<ModernizeModule> X("modernize-module",
// This anchor is used to force the linker to link in the generated object file
// and thus register the ModernizeModule.
+// NOLINTNEXTLINE(misc-use-internal-linkage)
volatile int ModernizeModuleAnchorSource = 0;
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp b/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp
index 53447c2b960f9..5eebccc366fd5 100644
--- a/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp
@@ -112,7 +112,8 @@ void RedundantVoidArgCheck::processFunctionDecl(
"function declaration");
}
-bool isMacroIdentifier(const IdentifierTable &Idents, const Token &ProtoToken) {
+static bool isMacroIdentifier(const IdentifierTable &Idents,
+ const Token &ProtoToken) {
if (!ProtoToken.is(tok::TokenKind::raw_identifier))
return false;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp
index 6040cddf0e52a..9e4d184c4b6e1 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp
@@ -279,7 +279,7 @@ findInsertionForConstraint(const FunctionDecl *Function, ASTContext &Context) {
return Body->getBeginLoc();
}
-bool isPrimaryExpression(const Expr *Expression) {
+static bool isPrimaryExpression(const Expr *Expression) {
// This function is an incomplete approximation of checking whether
// an Expr is a primary expression. In particular, if this function
// returns true, the expression is a primary expression. The converse
diff --git a/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
index 93151024064b4..b361ae4456538 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
@@ -48,8 +48,8 @@ static std::set<const Type *> getAllDirectBases(const CXXRecordDecl *Record) {
/// Returns a matcher that matches member expressions where the base is
/// the variable declared as \p Var and the accessed member is the one declared
/// as \p Field.
-internal::Matcher<Expr> accessToFieldInVar(const FieldDecl *Field,
- const ValueDecl *Var) {
+static internal::Matcher<Expr> accessToFieldInVar(const FieldDecl *Field,
+ const ValueDecl *Var) {
return ignoringImpCasts(
memberExpr(hasObjectExpression(declRefExpr(to(varDecl(equalsNode(Var))))),
member(fieldDecl(equalsNode(Field)))));
diff --git a/clang-tools-extra/clang-tidy/modernize/UseStartsEndsWithCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseStartsEndsWithCheck.cpp
index 2e059f24d47b6..2af67f7ccb4c1 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseStartsEndsWithCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseStartsEndsWithCheck.cpp
@@ -33,6 +33,8 @@ static bool isNegativeComparison(const Expr *ComparisonExpr) {
return false;
}
+namespace {
+
struct NotLengthExprForStringNode {
NotLengthExprForStringNode(std::string ID, DynTypedNode Node,
ASTContext *Context)
@@ -91,6 +93,8 @@ AST_MATCHER_P(Expr, lengthExprForStringNode, std::string, ID) {
ID, DynTypedNode::create(Node), &(Finder->getASTContext())));
}
+} // namespace
+
UseStartsEndsWithCheck::UseStartsEndsWithCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context) {}
diff --git a/clang-tools-extra/clang-tidy/mpi/MPITidyModule.cpp b/clang-tools-extra/clang-tidy/mpi/MPITidyModule.cpp
index 166d71e130db5..67ae101c18cb1 100644
--- a/clang-tools-extra/clang-tidy/mpi/MPITidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/mpi/MPITidyModule.cpp
@@ -31,6 +31,6 @@ static ClangTidyModuleRegistry::Add<mpi::MPIModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the MPIModule.
-volatile int MPIModuleAnchorSource = 0;
+volatile int MPIModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/objc/NSDateFormatterCheck.cpp b/clang-tools-extra/clang-tidy/objc/NSDateFormatterCheck.cpp
index 5438c9c892e2e..79e9d97d9594b 100644
--- a/clang-tools-extra/clang-tidy/objc/NSDateFormatterCheck.cpp
+++ b/clang-tools-extra/clang-tidy/objc/NSDateFormatterCheck.cpp
@@ -34,7 +34,7 @@ static char ValidDatePatternChars[] = {
// A string pattern is valid if all the letters(a-z, A-Z) in it belong to the
// set of reserved characters. See:
// https://www.unicode.org/reports/tr35/tr35.html#Invalid_Patterns
-bool isValidDatePattern(StringRef Pattern) {
+static bool isValidDatePattern(StringRef Pattern) {
return llvm::all_of(Pattern, [](const auto &PatternChar) {
return !isalpha(PatternChar) ||
llvm::is_contained(ValidDatePatternChars, PatternChar);
diff --git a/clang-tools-extra/clang-tidy/objc/ObjCTidyModule.cpp b/clang-tools-extra/clang-tidy/objc/ObjCTidyModule.cpp
index 35113f80870f6..56ccf33a6362a 100644
--- a/clang-tools-extra/clang-tidy/objc/ObjCTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/objc/ObjCTidyModule.cpp
@@ -53,6 +53,6 @@ static ClangTidyModuleRegistry::Add<ObjCModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the ObjCModule.
-volatile int ObjCModuleAnchorSource = 0;
+volatile int ObjCModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/openmp/OpenMPTidyModule.cpp b/clang-tools-extra/clang-tidy/openmp/OpenMPTidyModule.cpp
index 37092f49b25d6..d9c9d90673408 100644
--- a/clang-tools-extra/clang-tidy/openmp/OpenMPTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/openmp/OpenMPTidyModule.cpp
@@ -34,6 +34,6 @@ static ClangTidyModuleRegistry::Add<OpenMPModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the OpenMPModule.
-volatile int OpenMPModuleAnchorSource = 0;
+volatile int OpenMPModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp b/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp
index 75ef7a697031e..f458e26d964b0 100644
--- a/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp
+++ b/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp
@@ -78,9 +78,9 @@ void MoveConstArgCheck::registerMatchers(MatchFinder *Finder) {
this);
}
-bool isRValueReferenceParam(const Expr *Invocation,
- const QualType *InvocationParmType,
- const Expr *Arg) {
+static bool isRValueReferenceParam(const Expr *Invocation,
+ const QualType *InvocationParmType,
+ const Expr *Arg) {
if (Invocation && (*InvocationParmType)->isRValueReferenceType() &&
Arg->isLValue()) {
if (!Invocation->getType()->isRecordType())
diff --git a/clang-tools-extra/clang-tidy/performance/PerformanceTidyModule.cpp b/clang-tools-extra/clang-tidy/performance/PerformanceTidyModule.cpp
index 9e0fa6f88b36a..10ad9ec6fef4c 100644
--- a/clang-tools-extra/clang-tidy/performance/PerformanceTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/performance/PerformanceTidyModule.cpp
@@ -81,6 +81,7 @@ static ClangTidyModuleRegistry::Add<PerformanceModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the PerformanceModule.
+// NOLINTNEXTLINE(misc-use-internal-linkage)
volatile int PerformanceModuleAnchorSource = 0;
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/plugin/ClangTidyPlugin.cpp b/clang-tools-extra/clang-tidy/plugin/ClangTidyPlugin.cpp
index 3caa222b9fa4c..651a63b3aa972 100644
--- a/clang-tools-extra/clang-tidy/plugin/ClangTidyPlugin.cpp
+++ b/clang-tools-extra/clang-tidy/plugin/ClangTidyPlugin.cpp
@@ -78,6 +78,7 @@ class ClangTidyPluginAction : public PluginASTAction {
// This anchor is used to force the linker to link in the generated object file
// and thus register the clang-tidy plugin.
+// NOLINTNEXTLINE(misc-use-internal-linkage)
volatile int ClangTidyPluginAnchorSource = 0;
static clang::FrontendPluginRegistry::Add<clang::tidy::ClangTidyPluginAction>
diff --git a/clang-tools-extra/clang-tidy/portability/PortabilityTidyModule.cpp b/clang-tools-extra/clang-tidy/portability/PortabilityTidyModule.cpp
index a15cb36dfdaff..98853556588b3 100644
--- a/clang-tools-extra/clang-tidy/portability/PortabilityTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/portability/PortabilityTidyModule.cpp
@@ -42,6 +42,7 @@ static ClangTidyModuleRegistry::Add<PortabilityModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the PortabilityModule.
+// NOLINTNEXTLINE(misc-use-internal-linkage)
volatile int PortabilityModuleAnchorSource = 0;
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp b/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
index bf7a847dff103..ce736a8d16023 100644
--- a/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
@@ -16,29 +16,31 @@
using namespace clang::ast_matchers;
-namespace clang {
-namespace ast_matchers {
+namespace clang::tidy::readability {
+
+namespace {
AST_POLYMORPHIC_MATCHER_P2(hasAnyArgumentWithParam,
AST_POLYMORPHIC_SUPPORTED_TYPES(CallExpr,
CXXConstructExpr),
- internal::Matcher<Expr>, ArgMatcher,
- internal::Matcher<ParmVarDecl>, ParamMatcher) {
- BoundNodesTreeBuilder Result;
+ ast_matchers::internal::Matcher<Expr>, ArgMatcher,
+ ast_matchers::internal::Matcher<ParmVarDecl>,
+ ParamMatcher) {
+ ast_matchers::internal::BoundNodesTreeBuilder Result;
// The first argument of an overloaded member operator is the implicit object
// argument of the method which should not be matched against a parameter, so
// we skip over it here.
- BoundNodesTreeBuilder Matches;
+ ast_matchers::internal::BoundNodesTreeBuilder Matches;
unsigned ArgIndex = cxxOperatorCallExpr(callee(cxxMethodDecl()))
.matches(Node, Finder, &Matches)
? 1
: 0;
int ParamIndex = 0;
for (; ArgIndex < Node.getNumArgs(); ++ArgIndex) {
- BoundNodesTreeBuilder ArgMatches(*Builder);
+ ast_matchers::internal::BoundNodesTreeBuilder ArgMatches(*Builder);
if (ArgMatcher.matches(*(Node.getArg(ArgIndex)->IgnoreParenCasts()), Finder,
&ArgMatches)) {
- BoundNodesTreeBuilder ParamMatches(ArgMatches);
+ ast_matchers::internal::BoundNodesTreeBuilder ParamMatches(ArgMatches);
if (expr(anyOf(cxxConstructExpr(hasDeclaration(cxxConstructorDecl(
hasParameter(ParamIndex, ParamMatcher)))),
callExpr(callee(functionDecl(
@@ -80,9 +82,10 @@ AST_MATCHER(Expr, usedInBooleanContext) {
binaryOperator(hasAnyOperatorName("&&", "||")),
unaryOperator(hasOperatorName("!")).bind("NegOnSize"))))))
.matches(Node, Finder, Builder);
- Builder->removeBindings([ExprName](const BoundNodesMap &Nodes) {
- return Nodes.getNode(ExprName).getNodeKind().isNone();
- });
+ Builder->removeBindings(
+ [ExprName](const ast_matchers::internal::BoundNodesMap &Nodes) {
+ return Nodes.getNode(ExprName).getNodeKind().isNone();
+ });
return Result;
}
@@ -107,8 +110,7 @@ AST_MATCHER_P(UserDefinedLiteral, hasLiteral,
return false;
}
-} // namespace ast_matchers
-namespace tidy::readability {
+} // namespace
using utils::isBinaryOrTernary;
@@ -407,5 +409,4 @@ void ContainerSizeEmptyCheck::check(const MatchFinder::MatchResult &Result) {
<< Container;
}
-} // namespace tidy::readability
-} // namespace clang
+} // namespace clang::tidy::readability
diff --git a/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp b/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp
index beca824c8c8ce..30df40bda57d8 100644
--- a/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp
+++ b/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp
@@ -18,6 +18,8 @@ using namespace clang::ast_matchers;
namespace clang::tidy::readability {
+namespace {
+
AST_MATCHER(CXXMethodDecl, isStatic) { return Node.isStatic(); }
AST_MATCHER(CXXMethodDecl, hasTrivialBody) { return Node.hasTrivialBody(); }
@@ -74,6 +76,8 @@ AST_MATCHER(CXXMethodDecl, usesThis) {
return UsageOfThis.Used;
}
+} // namespace
+
void ConvertMemberFunctionsToStatic::registerMatchers(MatchFinder *Finder) {
Finder->addMatcher(
cxxMethodDecl(
diff --git a/clang-tools-extra/clang-tidy/readability/MakeMemberFunctionConstCheck.cpp b/clang-tools-extra/clang-tidy/readability/MakeMemberFunctionConstCheck.cpp
index d42fcba70e81b..85852c2c829a1 100644
--- a/clang-tools-extra/clang-tidy/readability/MakeMemberFunctionConstCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/MakeMemberFunctionConstCheck.cpp
@@ -17,6 +17,8 @@ using namespace clang::ast_matchers;
namespace clang::tidy::readability {
+namespace {
+
AST_MATCHER(CXXMethodDecl, isStatic) { return Node.isStatic(); }
AST_MATCHER(CXXMethodDecl, hasTrivialBody) { return Node.hasTrivialBody(); }
@@ -214,6 +216,8 @@ AST_MATCHER(CXXMethodDecl, usesThisAsConst) {
return UsageOfThis.Usage == Const;
}
+} // namespace
+
void MakeMemberFunctionConstCheck::registerMatchers(MatchFinder *Finder) {
Finder->addMatcher(
traverse(
diff --git a/clang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp b/clang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp
index 4c0812f0e6793..d59b0312673b9 100644
--- a/clang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/readability/ReadabilityTidyModule.cpp
@@ -186,6 +186,7 @@ static ClangTidyModuleRegistry::Add<ReadabilityModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the ReadabilityModule.
+// NOLINTNEXTLINE(misc-use-internal-linkage)
volatile int ReadabilityModuleAnchorSource = 0;
} // namespace clang::tidy
diff --git a/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp b/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp
index 7850a6f29995f..053892dffc7b6 100644
--- a/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/RedundantDeclarationCheck.cpp
@@ -15,10 +15,14 @@ using namespace clang::ast_matchers;
namespace clang::tidy::readability {
+namespace {
+
AST_MATCHER(FunctionDecl, doesDeclarationForceExternallyVisibleDefinition) {
return Node.doesDeclarationForceExternallyVisibleDefinition();
}
+} // namespace
+
RedundantDeclarationCheck::RedundantDeclarationCheck(StringRef Name,
ClangTidyContext *Context)
: ClangTidyCheck(Name, Context),
diff --git a/clang-tools-extra/clang-tidy/readability/RedundantInlineSpecifierCheck.cpp b/clang-tools-extra/clang-tidy/readability/RedundantInlineSpecifierCheck.cpp
index 1693e5c5e9cd4..969bf2d1add6b 100644
--- a/clang-tools-extra/clang-tidy/readability/RedundantInlineSpecifierCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/RedundantInlineSpecifierCheck.cpp
@@ -38,8 +38,8 @@ AST_POLYMORPHIC_MATCHER(isInlineSpecified,
AST_POLYMORPHIC_MATCHER_P(isInternalLinkage,
AST_POLYMORPHIC_SUPPORTED_TYPES(FunctionDecl,
VarDecl),
- bool, strictMode) {
- if (!strictMode)
+ bool, StrictMode) {
+ if (!StrictMode)
return false;
if (const auto *FD = dyn_cast<FunctionDecl>(&Node))
return FD->getStorageClass() == SC_Static || FD->isInAnonymousNamespace();
diff --git a/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
index dc36db4e0e8d9..4336c723bd7cd 100644
--- a/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
+++ b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
@@ -447,7 +447,7 @@ createOptionsProvider(llvm::IntrusiveRefCntPtr<vfs::FileSystem> FS) {
std::move(OverrideOptions), std::move(FS));
}
-llvm::IntrusiveRefCntPtr<vfs::FileSystem>
+static llvm::IntrusiveRefCntPtr<vfs::FileSystem>
getVfsFromFile(const std::string &OverlayFile,
llvm::IntrusiveRefCntPtr<vfs::FileSystem> BaseFS) {
llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> Buffer =
diff --git a/clang-tools-extra/clang-tidy/utils/NamespaceAliaser.cpp b/clang-tools-extra/clang-tidy/utils/NamespaceAliaser.cpp
index 4703ce1269819..22cf23fb2446e 100644
--- a/clang-tools-extra/clang-tidy/utils/NamespaceAliaser.cpp
+++ b/clang-tools-extra/clang-tidy/utils/NamespaceAliaser.cpp
@@ -16,15 +16,16 @@
namespace clang::tidy::utils {
using namespace ast_matchers;
+namespace {
+AST_MATCHER_P(NamespaceAliasDecl, hasTargetNamespace,
+ ast_matchers::internal::Matcher<NamespaceDecl>, InnerMatcher) {
+ return InnerMatcher.matches(*Node.getNamespace(), Finder, Builder);
+}
+} // namespace
NamespaceAliaser::NamespaceAliaser(const SourceManager &SourceMgr)
: SourceMgr(SourceMgr) {}
-AST_MATCHER_P(NamespaceAliasDecl, hasTargetNamespace,
- ast_matchers::internal::Matcher<NamespaceDecl>, innerMatcher) {
- return innerMatcher.matches(*Node.getNamespace(), Finder, Builder);
-}
-
std::optional<FixItHint>
NamespaceAliaser::createAlias(ASTContext &Context, const Stmt &Statement,
StringRef Namespace,
diff --git a/clang-tools-extra/clang-tidy/utils/TransformerClangTidyCheck.cpp b/clang-tools-extra/clang-tidy/utils/TransformerClangTidyCheck.cpp
index a40433e38a041..7d84a4a9331b1 100644
--- a/clang-tools-extra/clang-tidy/utils/TransformerClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/utils/TransformerClangTidyCheck.cpp
@@ -30,7 +30,7 @@ static void verifyRule(const RewriteRuleWith<std::string> &Rule) {
// If a string unintentionally containing '%' is passed as a diagnostic, Clang
// will claim the string is ill-formed and assert-fail. This function escapes
// such strings so they can be safely used in diagnostics.
-std::string escapeForDiagnostic(std::string ToEscape) {
+static std::string escapeForDiagnostic(std::string ToEscape) {
// Optimize for the common case that the string does not contain `%` at the
// cost of an extra scan over the string in the slow case.
auto Pos = ToEscape.find('%');
diff --git a/clang-tools-extra/clang-tidy/zircon/TemporaryObjectsCheck.cpp b/clang-tools-extra/clang-tidy/zircon/TemporaryObjectsCheck.cpp
index bb2976081a692..bb2c71913193b 100644
--- a/clang-tools-extra/clang-tidy/zircon/TemporaryObjectsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/zircon/TemporaryObjectsCheck.cpp
@@ -17,11 +17,15 @@ using namespace clang::ast_matchers;
namespace clang::tidy::zircon {
+namespace {
+
AST_MATCHER_P(CXXRecordDecl, matchesAnyName, ArrayRef<StringRef>, Names) {
std::string QualifiedName = Node.getQualifiedNameAsString();
return llvm::is_contained(Names, QualifiedName);
}
+} // namespace
+
void TemporaryObjectsCheck::registerMatchers(MatchFinder *Finder) {
// Matcher for default constructors.
Finder->addMatcher(
diff --git a/clang-tools-extra/clang-tidy/zircon/ZirconTidyModule.cpp b/clang-tools-extra/clang-tidy/zircon/ZirconTidyModule.cpp
index 000680455d617..0eb5683a94e41 100644
--- a/clang-tools-extra/clang-tidy/zircon/ZirconTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/zircon/ZirconTidyModule.cpp
@@ -32,6 +32,6 @@ static ClangTidyModuleRegistry::Add<ZirconModule>
// This anchor is used to force the linker to link in the generated object file
// and thus register the ZirconModule.
-volatile int ZirconModuleAnchorSource = 0;
+volatile int ZirconModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
} // namespace clang::tidy
>From 5d030d1f17d7a606d3ba25145974cb4eb854b76e Mon Sep 17 00:00:00 2001
From: Victor Baranov <bar.victor.2002 at gmail.com>
Date: Tue, 10 Jun 2025 09:47:12 +0300
Subject: [PATCH 2/3] fix misc tidy module newline
---
clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp b/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
index 198aa48a5dca5..6ddebcbc0e152 100644
--- a/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/misc/MiscTidyModule.cpp
@@ -94,4 +94,4 @@ static ClangTidyModuleRegistry::Add<misc::MiscModule>
// and thus register the MiscModule.
volatile int MiscModuleAnchorSource = 0; // NOLINT(misc-use-internal-linkage)
-} // namespace clang::tidy
\ No newline at end of file
+} // namespace clang::tidy
>From 00c9a7d947f14c92e6495e5efa24fd5e70055f4c Mon Sep 17 00:00:00 2001
From: Victor Baranov <bar.victor.2002 at gmail.com>
Date: Tue, 10 Jun 2025 18:30:51 +0300
Subject: [PATCH 3/3] fix unnecessary line break
---
.../clang-tidy/bugprone/EasilySwappableParametersCheck.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
index e3f4b7cca18a1..a179d4bf66b4d 100644
--- a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
@@ -1916,8 +1916,7 @@ static inline unsigned clampMinimumLength(const unsigned Value) {
return Value < 2 ? DefaultMinimumLength : Value;
}
-// FIXME: Maybe unneeded, getNameForDiagnostic() is expected to change to
-// return
+// FIXME: Maybe unneeded, getNameForDiagnostic() is expected to change to return
// a crafted location when the node itself is unnamed. (See D84658, D85033.)
/// Returns the diagnostic-friendly name of the node, or empty string.
static SmallString<64> getName(const NamedDecl *ND) {
More information about the cfe-commits
mailing list