[clang-tools-extra] [clang-tidy][NFC] Enable 'readability-simplify-boolean-expr' check (PR #158706)
Davide Cunial via cfe-commits
cfe-commits at lists.llvm.org
Tue Oct 28 23:10:58 PDT 2025
https://github.com/capitan-davide updated https://github.com/llvm/llvm-project/pull/158706
>From 518ae97641b488ca8c07a703c88f2a585b55594b Mon Sep 17 00:00:00 2001
From: Davide Cunial <dcunial at proton.me>
Date: Tue, 16 Sep 2025 07:19:34 +0200
Subject: [PATCH 1/3] [clang-tidy][NFC] Enable
'readability-simplify-boolean-expr' check
---
clang-tools-extra/clang-tidy/.clang-tidy | 1 -
.../EasilySwappableParametersCheck.cpp | 9 +++----
.../bugprone/NotNullTerminatedResultCheck.cpp | 11 +++-----
.../bugprone/SuspiciousEnumUsageCheck.cpp | 2 +-
.../google/AvoidNSObjectNewCheck.cpp | 5 +---
.../ImplementationInNamespaceCheck.cpp | 4 +--
.../clang-tidy/misc/ConstCorrectnessCheck.cpp | 3 +--
.../clang-tidy/misc/IncludeCleanerCheck.cpp | 2 +-
.../misc/NewDeleteOverloadsCheck.cpp | 7 ++----
.../misc/RedundantExpressionCheck.cpp | 25 +++++++------------
.../modernize/UseTrailingReturnTypeCheck.cpp | 2 +-
.../ImplicitBoolConversionCheck.cpp | 2 +-
.../SuspiciousCallArgumentCheck.cpp | 8 +++---
13 files changed, 28 insertions(+), 53 deletions(-)
diff --git a/clang-tools-extra/clang-tidy/.clang-tidy b/clang-tools-extra/clang-tidy/.clang-tidy
index d290901730405..4423f1c3dcd64 100644
--- a/clang-tools-extra/clang-tidy/.clang-tidy
+++ b/clang-tools-extra/clang-tidy/.clang-tidy
@@ -29,7 +29,6 @@ Checks: >
-readability-magic-numbers,
-readability-named-parameter,
-readability-qualified-auto,
- -readability-simplify-boolean-expr,
-readability-static-definition-in-anonymous-namespace,
-readability-suspicious-call-argument,
-readability-use-anyofallof
diff --git a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
index c426b32ccade3..566de24ea3d1f 100644
--- a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
@@ -1880,12 +1880,9 @@ static bool prefixSuffixCoverUnderThreshold(std::size_t Threshold,
padStringAtBegin(S1PadB, BiggerLength);
padStringAtBegin(S2PadB, BiggerLength);
- if (isCommonSuffixWithoutSomeCharacters(
- Threshold, StringRef{S1PadB.begin(), BiggerLength},
- StringRef{S2PadB.begin(), BiggerLength}))
- return true;
-
- return false;
+ return isCommonSuffixWithoutSomeCharacters(
+ Threshold, StringRef{S1PadB.begin(), BiggerLength},
+ StringRef{S2PadB.begin(), BiggerLength});
}
} // namespace filter
diff --git a/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
index 203170d55f694..08823e73adf6b 100644
--- a/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
@@ -268,10 +268,8 @@ static bool isDestCapacityOverflows(const MatchFinder::MatchResult &Result) {
// Assume that the destination array's capacity cannot overflow if the
// expression of the memory allocation contains '+ 1'.
StringRef DestCapacityExprStr = exprToStr(DestCapacityExpr, Result);
- if (DestCapacityExprStr.contains("+1") || DestCapacityExprStr.contains("+ 1"))
- return false;
-
- return true;
+ return !(DestCapacityExprStr.contains("+1") ||
+ DestCapacityExprStr.contains("+ 1"));
}
static bool
@@ -533,10 +531,7 @@ AST_MATCHER_P(Expr, hasDefinition, ast_matchers::internal::Matcher<Expr>,
hasLHS(declRefExpr(to(varDecl(equalsBoundNode(VarDeclName))))),
hasRHS(ignoringImpCasts(InnerMatcher))))))));
- if (DREHasDefinition.matches(*SimpleNode, Finder, Builder))
- return true;
-
- return false;
+ return DREHasDefinition.matches(*SimpleNode, Finder, Builder);
}
} // namespace
diff --git a/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
index f2067bec001cc..fd5dca835b676 100644
--- a/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
@@ -100,7 +100,7 @@ static bool isPossiblyBitMask(const EnumDecl *EnumDec) {
return NonPowOfTwoCounter >= 1 && NonPowOfTwoCounter <= 2 &&
NonPowOfTwoCounter < EnumLen / 2 &&
(VR.MaxVal - VR.MinVal != EnumLen - 1) &&
- !(NonPowOfTwoCounter == 1 && isMaxValAllBitSetLiteral(EnumDec));
+ (NonPowOfTwoCounter != 1 || !isMaxValAllBitSetLiteral(EnumDec));
}
SuspiciousEnumUsageCheck::SuspiciousEnumUsageCheck(StringRef Name,
diff --git a/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp b/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp
index adcbf245ef7a3..cc1b01fa78908 100644
--- a/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp
+++ b/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp
@@ -27,10 +27,7 @@ static bool isMessageExpressionInsideMacro(const ObjCMessageExpr *Expr) {
return true;
SourceLocation SelectorLocation = Expr->getSelectorStartLoc();
- if (SelectorLocation.isMacroID())
- return true;
-
- return false;
+ return SelectorLocation.isMacroID();
}
// Walk up the class hierarchy looking for an -init method, returning true
diff --git a/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp b/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp
index c2fbc4422e5d2..6325f434be4ce 100644
--- a/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp
+++ b/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp
@@ -39,7 +39,7 @@ void ImplementationInNamespaceCheck::check(
}
// Enforce that the namespace is the result of macro expansion
- if (Result.SourceManager->isMacroBodyExpansion(NS->getLocation()) == false) {
+ if (!Result.SourceManager->isMacroBodyExpansion(NS->getLocation())) {
diag(NS->getLocation(), "the outermost namespace should be the '%0' macro")
<< RequiredNamespaceDeclMacroName;
return;
@@ -55,7 +55,7 @@ void ImplementationInNamespaceCheck::check(
}
// Lastly, make sure the namespace name actually has the __llvm_libc prefix
- if (NS->getName().starts_with(RequiredNamespaceRefStart) == false) {
+ if (!NS->getName().starts_with(RequiredNamespaceRefStart)) {
diag(NS->getLocation(), "the '%0' macro expansion should start with '%1'")
<< RequiredNamespaceDeclMacroName << RequiredNamespaceRefStart;
return;
diff --git a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp
index b32507d66cbac..348e64ccd00a7 100644
--- a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp
@@ -54,8 +54,7 @@ ConstCorrectnessCheck::ConstCorrectnessCheck(StringRef Name,
AllowedTypes(
utils::options::parseStringList(Options.get("AllowedTypes", ""))) {
- if (AnalyzeValues == false && AnalyzeReferences == false &&
- AnalyzePointers == false)
+ if (!AnalyzeValues && !AnalyzeReferences && !AnalyzePointers)
this->configurationDiag(
"The check 'misc-const-correctness' will not "
"perform any analysis because 'AnalyzeValues', "
diff --git a/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp b/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
index 813005b892ed7..74ef936ff8e95 100644
--- a/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
@@ -70,7 +70,7 @@ IncludeCleanerCheck::IncludeCleanerCheck(StringRef Name,
IgnoreHeadersRegex.emplace_back(HeaderSuffix);
}
- if (UnusedIncludes == false && MissingIncludes == false)
+ if (!UnusedIncludes && !MissingIncludes)
this->configurationDiag("The check 'misc-include-cleaner' will not "
"perform any analysis because 'UnusedIncludes' and "
"'MissingIncludes' are both false.");
diff --git a/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp b/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp
index 2837f40bc49b8..9adf4fb207804 100644
--- a/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp
@@ -52,11 +52,8 @@ AST_MATCHER(FunctionDecl, isPlacementOverload) {
const auto *FPT = Node.getType()->castAs<FunctionProtoType>();
ASTContext &Ctx = Node.getASTContext();
- if (Ctx.getLangOpts().SizedDeallocation &&
- Ctx.hasSameType(FPT->getParamType(1), Ctx.getSizeType()))
- return false;
-
- return true;
+ return !(Ctx.getLangOpts().SizedDeallocation &&
+ Ctx.hasSameType(FPT->getParamType(1), Ctx.getSizeType()));
}
} // namespace
diff --git a/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp b/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
index 107eda2e98f27..0debf985121c3 100644
--- a/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
@@ -196,12 +196,9 @@ static bool areExclusiveRanges(BinaryOperatorKind OpcodeLHS,
// Handle the case where constants are off by one: x > 5 && x < 6.
APSInt ValueLhsPlus1;
- if (OpcodeLHS == BO_GT && OpcodeRHS == BO_LT &&
- incrementWithoutOverflow(ValueLHS, ValueLhsPlus1) &&
- APSInt::compareValues(ValueLhsPlus1, ValueRHS) == 0)
- return true;
-
- return false;
+ return OpcodeLHS == BO_GT && OpcodeRHS == BO_LT &&
+ incrementWithoutOverflow(ValueLHS, ValueLhsPlus1) &&
+ APSInt::compareValues(ValueLhsPlus1, ValueRHS) == 0;
}
// Returns whether the ranges covered by the union of both relational
@@ -726,12 +723,10 @@ static bool areSidesBinaryConstExpressions(const BinaryOperator *&BinOp,
return !E->isValueDependent() && E->isIntegerConstantExpr(*AstCtx);
};
- if ((IsIntegerConstantExpr(LhsBinOp->getLHS()) ||
- IsIntegerConstantExpr(LhsBinOp->getRHS())) &&
- (IsIntegerConstantExpr(RhsBinOp->getLHS()) ||
- IsIntegerConstantExpr(RhsBinOp->getRHS())))
- return true;
- return false;
+ return (IsIntegerConstantExpr(LhsBinOp->getLHS()) ||
+ IsIntegerConstantExpr(LhsBinOp->getRHS())) &&
+ (IsIntegerConstantExpr(RhsBinOp->getLHS()) ||
+ IsIntegerConstantExpr(RhsBinOp->getRHS()));
}
static bool areSidesBinaryConstExpressionsOrDefinesOrIntegerConstant(
@@ -747,10 +742,8 @@ static bool areSidesBinaryConstExpressionsOrDefinesOrIntegerConstant(
auto IsDefineExpr = [AstCtx](const Expr *E) {
const SourceRange Lsr = E->getSourceRange();
- if (!Lsr.getBegin().isMacroID() || E->isValueDependent() ||
- !E->isIntegerConstantExpr(*AstCtx))
- return false;
- return true;
+ return !(!Lsr.getBegin().isMacroID() || E->isValueDependent() ||
+ !E->isIntegerConstantExpr(*AstCtx));
};
return IsDefineExpr(Lhs) || IsDefineExpr(Rhs);
diff --git a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
index 82f64096cbec1..2bb15169b4659 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
@@ -459,7 +459,7 @@ UseTrailingReturnTypeCheck::UseTrailingReturnTypeCheck(
TransformFunctions(Options.get("TransformFunctions", true)),
TransformLambdas(Options.get("TransformLambdas", TransformLambda::All)) {
- if (TransformFunctions == false && TransformLambdas == TransformLambda::None)
+ if (!TransformFunctions && TransformLambdas == TransformLambda::None)
this->configurationDiag(
"The check 'modernize-use-trailing-return-type' will not perform any "
"analysis because 'TransformFunctions' and 'TransformLambdas' are "
diff --git a/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp b/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
index 6b10e6b206a31..bd91fa6eec6c9 100644
--- a/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
@@ -209,7 +209,7 @@ getEquivalentForBoolLiteral(const CXXBoolLiteralExpr *BoolLiteral,
// Prior to C++11, false literal could be implicitly converted to pointer.
if (!Context.getLangOpts().CPlusPlus11 &&
(DestType->isPointerType() || DestType->isMemberPointerType()) &&
- BoolLiteral->getValue() == false) {
+ !BoolLiteral->getValue()) {
return "0";
}
diff --git a/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp b/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp
index a80637dee18f4..8ac5de0e10edb 100644
--- a/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp
@@ -413,14 +413,12 @@ static bool areTypesCompatible(QualType ArgType, QualType ParamType,
// Arithmetic types are interconvertible, except scoped enums.
if (ParamType->isArithmeticType() && ArgType->isArithmeticType()) {
- if ((ParamType->isEnumeralType() && ParamType->castAsCanonical<EnumType>()
+ return !(
+ (ParamType->isEnumeralType() && ParamType->castAsCanonical<EnumType>()
->getOriginalDecl()
->isScoped()) ||
(ArgType->isEnumeralType() &&
- ArgType->castAsCanonical<EnumType>()->getOriginalDecl()->isScoped()))
- return false;
-
- return true;
+ ArgType->castAsCanonical<EnumType>()->getOriginalDecl()->isScoped()));
}
// Check if the argument and the param are both function types (the parameter
>From ad77a686741e969525d5228c18ba3cf283c14fb0 Mon Sep 17 00:00:00 2001
From: Davide Cunial <dcunial at proton.me>
Date: Tue, 28 Oct 2025 20:12:29 +0100
Subject: [PATCH 2/3] Revert "[clang-tidy][NFC] Enable
'readability-simplify-boolean-expr' check"
This reverts commit 518ae97641b488ca8c07a703c88f2a585b55594b.
---
clang-tools-extra/clang-tidy/.clang-tidy | 1 +
.../EasilySwappableParametersCheck.cpp | 9 ++++---
.../bugprone/NotNullTerminatedResultCheck.cpp | 11 +++++---
.../bugprone/SuspiciousEnumUsageCheck.cpp | 2 +-
.../google/AvoidNSObjectNewCheck.cpp | 5 +++-
.../ImplementationInNamespaceCheck.cpp | 4 +--
.../clang-tidy/misc/ConstCorrectnessCheck.cpp | 3 ++-
.../clang-tidy/misc/IncludeCleanerCheck.cpp | 2 +-
.../misc/NewDeleteOverloadsCheck.cpp | 7 ++++--
.../misc/RedundantExpressionCheck.cpp | 25 ++++++++++++-------
.../modernize/UseTrailingReturnTypeCheck.cpp | 2 +-
.../ImplicitBoolConversionCheck.cpp | 2 +-
.../SuspiciousCallArgumentCheck.cpp | 8 +++---
13 files changed, 53 insertions(+), 28 deletions(-)
diff --git a/clang-tools-extra/clang-tidy/.clang-tidy b/clang-tools-extra/clang-tidy/.clang-tidy
index 4423f1c3dcd64..d290901730405 100644
--- a/clang-tools-extra/clang-tidy/.clang-tidy
+++ b/clang-tools-extra/clang-tidy/.clang-tidy
@@ -29,6 +29,7 @@ Checks: >
-readability-magic-numbers,
-readability-named-parameter,
-readability-qualified-auto,
+ -readability-simplify-boolean-expr,
-readability-static-definition-in-anonymous-namespace,
-readability-suspicious-call-argument,
-readability-use-anyofallof
diff --git a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
index 566de24ea3d1f..c426b32ccade3 100644
--- a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
@@ -1880,9 +1880,12 @@ static bool prefixSuffixCoverUnderThreshold(std::size_t Threshold,
padStringAtBegin(S1PadB, BiggerLength);
padStringAtBegin(S2PadB, BiggerLength);
- return isCommonSuffixWithoutSomeCharacters(
- Threshold, StringRef{S1PadB.begin(), BiggerLength},
- StringRef{S2PadB.begin(), BiggerLength});
+ if (isCommonSuffixWithoutSomeCharacters(
+ Threshold, StringRef{S1PadB.begin(), BiggerLength},
+ StringRef{S2PadB.begin(), BiggerLength}))
+ return true;
+
+ return false;
}
} // namespace filter
diff --git a/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
index 08823e73adf6b..203170d55f694 100644
--- a/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
@@ -268,8 +268,10 @@ static bool isDestCapacityOverflows(const MatchFinder::MatchResult &Result) {
// Assume that the destination array's capacity cannot overflow if the
// expression of the memory allocation contains '+ 1'.
StringRef DestCapacityExprStr = exprToStr(DestCapacityExpr, Result);
- return !(DestCapacityExprStr.contains("+1") ||
- DestCapacityExprStr.contains("+ 1"));
+ if (DestCapacityExprStr.contains("+1") || DestCapacityExprStr.contains("+ 1"))
+ return false;
+
+ return true;
}
static bool
@@ -531,7 +533,10 @@ AST_MATCHER_P(Expr, hasDefinition, ast_matchers::internal::Matcher<Expr>,
hasLHS(declRefExpr(to(varDecl(equalsBoundNode(VarDeclName))))),
hasRHS(ignoringImpCasts(InnerMatcher))))))));
- return DREHasDefinition.matches(*SimpleNode, Finder, Builder);
+ if (DREHasDefinition.matches(*SimpleNode, Finder, Builder))
+ return true;
+
+ return false;
}
} // namespace
diff --git a/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
index fd5dca835b676..f2067bec001cc 100644
--- a/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
@@ -100,7 +100,7 @@ static bool isPossiblyBitMask(const EnumDecl *EnumDec) {
return NonPowOfTwoCounter >= 1 && NonPowOfTwoCounter <= 2 &&
NonPowOfTwoCounter < EnumLen / 2 &&
(VR.MaxVal - VR.MinVal != EnumLen - 1) &&
- (NonPowOfTwoCounter != 1 || !isMaxValAllBitSetLiteral(EnumDec));
+ !(NonPowOfTwoCounter == 1 && isMaxValAllBitSetLiteral(EnumDec));
}
SuspiciousEnumUsageCheck::SuspiciousEnumUsageCheck(StringRef Name,
diff --git a/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp b/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp
index cc1b01fa78908..adcbf245ef7a3 100644
--- a/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp
+++ b/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp
@@ -27,7 +27,10 @@ static bool isMessageExpressionInsideMacro(const ObjCMessageExpr *Expr) {
return true;
SourceLocation SelectorLocation = Expr->getSelectorStartLoc();
- return SelectorLocation.isMacroID();
+ if (SelectorLocation.isMacroID())
+ return true;
+
+ return false;
}
// Walk up the class hierarchy looking for an -init method, returning true
diff --git a/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp b/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp
index 6325f434be4ce..c2fbc4422e5d2 100644
--- a/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp
+++ b/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp
@@ -39,7 +39,7 @@ void ImplementationInNamespaceCheck::check(
}
// Enforce that the namespace is the result of macro expansion
- if (!Result.SourceManager->isMacroBodyExpansion(NS->getLocation())) {
+ if (Result.SourceManager->isMacroBodyExpansion(NS->getLocation()) == false) {
diag(NS->getLocation(), "the outermost namespace should be the '%0' macro")
<< RequiredNamespaceDeclMacroName;
return;
@@ -55,7 +55,7 @@ void ImplementationInNamespaceCheck::check(
}
// Lastly, make sure the namespace name actually has the __llvm_libc prefix
- if (!NS->getName().starts_with(RequiredNamespaceRefStart)) {
+ if (NS->getName().starts_with(RequiredNamespaceRefStart) == false) {
diag(NS->getLocation(), "the '%0' macro expansion should start with '%1'")
<< RequiredNamespaceDeclMacroName << RequiredNamespaceRefStart;
return;
diff --git a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp
index 348e64ccd00a7..b32507d66cbac 100644
--- a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp
@@ -54,7 +54,8 @@ ConstCorrectnessCheck::ConstCorrectnessCheck(StringRef Name,
AllowedTypes(
utils::options::parseStringList(Options.get("AllowedTypes", ""))) {
- if (!AnalyzeValues && !AnalyzeReferences && !AnalyzePointers)
+ if (AnalyzeValues == false && AnalyzeReferences == false &&
+ AnalyzePointers == false)
this->configurationDiag(
"The check 'misc-const-correctness' will not "
"perform any analysis because 'AnalyzeValues', "
diff --git a/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp b/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
index 74ef936ff8e95..813005b892ed7 100644
--- a/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
@@ -70,7 +70,7 @@ IncludeCleanerCheck::IncludeCleanerCheck(StringRef Name,
IgnoreHeadersRegex.emplace_back(HeaderSuffix);
}
- if (!UnusedIncludes && !MissingIncludes)
+ if (UnusedIncludes == false && MissingIncludes == false)
this->configurationDiag("The check 'misc-include-cleaner' will not "
"perform any analysis because 'UnusedIncludes' and "
"'MissingIncludes' are both false.");
diff --git a/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp b/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp
index 9adf4fb207804..2837f40bc49b8 100644
--- a/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp
@@ -52,8 +52,11 @@ AST_MATCHER(FunctionDecl, isPlacementOverload) {
const auto *FPT = Node.getType()->castAs<FunctionProtoType>();
ASTContext &Ctx = Node.getASTContext();
- return !(Ctx.getLangOpts().SizedDeallocation &&
- Ctx.hasSameType(FPT->getParamType(1), Ctx.getSizeType()));
+ if (Ctx.getLangOpts().SizedDeallocation &&
+ Ctx.hasSameType(FPT->getParamType(1), Ctx.getSizeType()))
+ return false;
+
+ return true;
}
} // namespace
diff --git a/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp b/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
index 0debf985121c3..107eda2e98f27 100644
--- a/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
@@ -196,9 +196,12 @@ static bool areExclusiveRanges(BinaryOperatorKind OpcodeLHS,
// Handle the case where constants are off by one: x > 5 && x < 6.
APSInt ValueLhsPlus1;
- return OpcodeLHS == BO_GT && OpcodeRHS == BO_LT &&
- incrementWithoutOverflow(ValueLHS, ValueLhsPlus1) &&
- APSInt::compareValues(ValueLhsPlus1, ValueRHS) == 0;
+ if (OpcodeLHS == BO_GT && OpcodeRHS == BO_LT &&
+ incrementWithoutOverflow(ValueLHS, ValueLhsPlus1) &&
+ APSInt::compareValues(ValueLhsPlus1, ValueRHS) == 0)
+ return true;
+
+ return false;
}
// Returns whether the ranges covered by the union of both relational
@@ -723,10 +726,12 @@ static bool areSidesBinaryConstExpressions(const BinaryOperator *&BinOp,
return !E->isValueDependent() && E->isIntegerConstantExpr(*AstCtx);
};
- return (IsIntegerConstantExpr(LhsBinOp->getLHS()) ||
- IsIntegerConstantExpr(LhsBinOp->getRHS())) &&
- (IsIntegerConstantExpr(RhsBinOp->getLHS()) ||
- IsIntegerConstantExpr(RhsBinOp->getRHS()));
+ if ((IsIntegerConstantExpr(LhsBinOp->getLHS()) ||
+ IsIntegerConstantExpr(LhsBinOp->getRHS())) &&
+ (IsIntegerConstantExpr(RhsBinOp->getLHS()) ||
+ IsIntegerConstantExpr(RhsBinOp->getRHS())))
+ return true;
+ return false;
}
static bool areSidesBinaryConstExpressionsOrDefinesOrIntegerConstant(
@@ -742,8 +747,10 @@ static bool areSidesBinaryConstExpressionsOrDefinesOrIntegerConstant(
auto IsDefineExpr = [AstCtx](const Expr *E) {
const SourceRange Lsr = E->getSourceRange();
- return !(!Lsr.getBegin().isMacroID() || E->isValueDependent() ||
- !E->isIntegerConstantExpr(*AstCtx));
+ if (!Lsr.getBegin().isMacroID() || E->isValueDependent() ||
+ !E->isIntegerConstantExpr(*AstCtx))
+ return false;
+ return true;
};
return IsDefineExpr(Lhs) || IsDefineExpr(Rhs);
diff --git a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
index 2bb15169b4659..82f64096cbec1 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
@@ -459,7 +459,7 @@ UseTrailingReturnTypeCheck::UseTrailingReturnTypeCheck(
TransformFunctions(Options.get("TransformFunctions", true)),
TransformLambdas(Options.get("TransformLambdas", TransformLambda::All)) {
- if (!TransformFunctions && TransformLambdas == TransformLambda::None)
+ if (TransformFunctions == false && TransformLambdas == TransformLambda::None)
this->configurationDiag(
"The check 'modernize-use-trailing-return-type' will not perform any "
"analysis because 'TransformFunctions' and 'TransformLambdas' are "
diff --git a/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp b/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
index bd91fa6eec6c9..6b10e6b206a31 100644
--- a/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
@@ -209,7 +209,7 @@ getEquivalentForBoolLiteral(const CXXBoolLiteralExpr *BoolLiteral,
// Prior to C++11, false literal could be implicitly converted to pointer.
if (!Context.getLangOpts().CPlusPlus11 &&
(DestType->isPointerType() || DestType->isMemberPointerType()) &&
- !BoolLiteral->getValue()) {
+ BoolLiteral->getValue() == false) {
return "0";
}
diff --git a/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp b/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp
index 8ac5de0e10edb..a80637dee18f4 100644
--- a/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp
@@ -413,12 +413,14 @@ static bool areTypesCompatible(QualType ArgType, QualType ParamType,
// Arithmetic types are interconvertible, except scoped enums.
if (ParamType->isArithmeticType() && ArgType->isArithmeticType()) {
- return !(
- (ParamType->isEnumeralType() && ParamType->castAsCanonical<EnumType>()
+ if ((ParamType->isEnumeralType() && ParamType->castAsCanonical<EnumType>()
->getOriginalDecl()
->isScoped()) ||
(ArgType->isEnumeralType() &&
- ArgType->castAsCanonical<EnumType>()->getOriginalDecl()->isScoped()));
+ ArgType->castAsCanonical<EnumType>()->getOriginalDecl()->isScoped()))
+ return false;
+
+ return true;
}
// Check if the argument and the param are both function types (the parameter
>From a5d4399d28040de1821fce030f9b97d7112a7997 Mon Sep 17 00:00:00 2001
From: Davide Cunial <dcunial at proton.me>
Date: Wed, 29 Oct 2025 07:09:00 +0100
Subject: [PATCH 3/3] [clang-tidy][NFC] Enable
'readability-simplify-boolean-expr' check
With option SimplifyDemorganRelaxed: true
---
clang-tools-extra/clang-tidy/.clang-tidy | 3 ++-
.../ExpandModularHeadersPPCallbacks.cpp | 8 ++++----
.../abseil/TimeSubtractionCheck.cpp | 4 ++--
.../EasilySwappableParametersCheck.cpp | 7 ++-----
.../bugprone/NotNullTerminatedResultCheck.cpp | 10 ++--------
.../bugprone/ReservedIdentifierCheck.cpp | 8 ++++----
.../bugprone/SuspiciousEnumUsageCheck.cpp | 2 +-
.../bugprone/VirtualNearMissCheck.cpp | 4 ++--
.../SpecialMemberFunctionsCheck.cpp | 6 +++---
.../google/AvoidNSObjectNewCheck.cpp | 5 +----
.../ImplementationInNamespaceCheck.cpp | 4 ++--
.../clang-tidy/misc/ConstCorrectnessCheck.cpp | 4 ++--
.../clang-tidy/misc/IncludeCleanerCheck.cpp | 2 +-
.../misc/NewDeleteOverloadsCheck.cpp | 7 ++-----
.../misc/RedundantExpressionCheck.cpp | 19 ++++++-------------
.../clang-tidy/modernize/PassByValueCheck.cpp | 2 +-
...ReplaceDisallowCopyAndAssignMacroCheck.cpp | 2 +-
.../modernize/UseNodiscardCheck.cpp | 2 +-
.../modernize/UseTrailingReturnTypeCheck.cpp | 4 ++--
.../clang-tidy/objc/NSDateFormatterCheck.cpp | 2 +-
.../performance/MoveConstArgCheck.cpp | 4 ++--
.../portability/SIMDIntrinsicsCheck.cpp | 4 ++--
.../readability/FunctionSizeCheck.cpp | 2 +-
.../ImplicitBoolConversionCheck.cpp | 2 +-
.../readability/NonConstParameterCheck.cpp | 4 ++--
.../SuspiciousCallArgumentCheck.cpp | 11 ++++-------
.../clang-tidy/utils/FixItHintUtils.cpp | 4 ++--
27 files changed, 56 insertions(+), 80 deletions(-)
diff --git a/clang-tools-extra/clang-tidy/.clang-tidy b/clang-tools-extra/clang-tidy/.clang-tidy
index d290901730405..f6a8072543347 100644
--- a/clang-tools-extra/clang-tidy/.clang-tidy
+++ b/clang-tools-extra/clang-tidy/.clang-tidy
@@ -29,7 +29,6 @@ Checks: >
-readability-magic-numbers,
-readability-named-parameter,
-readability-qualified-auto,
- -readability-simplify-boolean-expr,
-readability-static-definition-in-anonymous-namespace,
-readability-suspicious-call-argument,
-readability-use-anyofallof
@@ -37,3 +36,5 @@ Checks: >
CheckOptions:
- key: performance-move-const-arg.CheckTriviallyCopyableMove
value: false
+ - key: readability-simplify-boolean-expr.SimplifyDeMorganRelaxed
+ value: true
diff --git a/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp b/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp
index 487e5e299d132..b5e7a13e69669 100644
--- a/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp
+++ b/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp
@@ -23,10 +23,10 @@ class ExpandModularHeadersPPCallbacks::FileRecorder {
/// Records that a given file entry is needed for replaying callbacks.
void addNecessaryFile(FileEntryRef File) {
// Don't record modulemap files because it breaks same file detection.
- if (!(File.getName().ends_with("module.modulemap") ||
- File.getName().ends_with("module.private.modulemap") ||
- File.getName().ends_with("module.map") ||
- File.getName().ends_with("module_private.map")))
+ if (!File.getName().ends_with("module.modulemap") &&
+ !File.getName().ends_with("module.private.modulemap") &&
+ !File.getName().ends_with("module.map") &&
+ !File.getName().ends_with("module_private.map"))
FilesToRecord.insert(File);
}
diff --git a/clang-tools-extra/clang-tidy/abseil/TimeSubtractionCheck.cpp b/clang-tools-extra/clang-tidy/abseil/TimeSubtractionCheck.cpp
index 2def393938e67..d8b72280061c7 100644
--- a/clang-tools-extra/clang-tidy/abseil/TimeSubtractionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/abseil/TimeSubtractionCheck.cpp
@@ -80,8 +80,8 @@ static bool parensRequired(const MatchFinder::MatchResult &Result,
const Expr *Node) {
// TODO: Figure out any more contexts in which we can omit the surrounding
// parentheses.
- return !(isConstructorAssignment(Result, Node) || isArgument(Result, Node) ||
- isReturn(Result, Node));
+ return !isConstructorAssignment(Result, Node) && !isArgument(Result, Node) &&
+ !isReturn(Result, Node);
}
void TimeSubtractionCheck::emitDiagnostic(const Expr *Node,
diff --git a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
index c426b32ccade3..4458ed820555c 100644
--- a/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/EasilySwappableParametersCheck.cpp
@@ -1880,12 +1880,9 @@ static bool prefixSuffixCoverUnderThreshold(std::size_t Threshold,
padStringAtBegin(S1PadB, BiggerLength);
padStringAtBegin(S2PadB, BiggerLength);
- if (isCommonSuffixWithoutSomeCharacters(
+ return isCommonSuffixWithoutSomeCharacters(
Threshold, StringRef{S1PadB.begin(), BiggerLength},
- StringRef{S2PadB.begin(), BiggerLength}))
- return true;
-
- return false;
+ StringRef{S2PadB.begin(), BiggerLength});
}
} // namespace filter
diff --git a/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
index 203170d55f694..1c54c96e83419 100644
--- a/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp
@@ -268,10 +268,7 @@ static bool isDestCapacityOverflows(const MatchFinder::MatchResult &Result) {
// Assume that the destination array's capacity cannot overflow if the
// expression of the memory allocation contains '+ 1'.
StringRef DestCapacityExprStr = exprToStr(DestCapacityExpr, Result);
- if (DestCapacityExprStr.contains("+1") || DestCapacityExprStr.contains("+ 1"))
- return false;
-
- return true;
+ return !(DestCapacityExprStr.contains("+1") || DestCapacityExprStr.contains("+ 1"));
}
static bool
@@ -533,10 +530,7 @@ AST_MATCHER_P(Expr, hasDefinition, ast_matchers::internal::Matcher<Expr>,
hasLHS(declRefExpr(to(varDecl(equalsBoundNode(VarDeclName))))),
hasRHS(ignoringImpCasts(InnerMatcher))))))));
- if (DREHasDefinition.matches(*SimpleNode, Finder, Builder))
- return true;
-
- return false;
+ return DREHasDefinition.matches(*SimpleNode, Finder, Builder);
}
} // namespace
diff --git a/clang-tools-extra/clang-tidy/bugprone/ReservedIdentifierCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ReservedIdentifierCheck.cpp
index 5812c18a2ccca..07af8eca8a440 100644
--- a/clang-tools-extra/clang-tidy/bugprone/ReservedIdentifierCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/ReservedIdentifierCheck.cpp
@@ -164,10 +164,10 @@ getFailureInfoImpl(StringRef Name, bool IsInGlobalNamespace, bool IsMacro,
return Info;
}
- if (!(hasReservedDoubleUnderscore(Name, LangOpts) ||
- startsWithUnderscoreCapital(Name) ||
- startsWithUnderscoreInGlobalNamespace(Name, IsInGlobalNamespace,
- IsMacro)))
+ if (!hasReservedDoubleUnderscore(Name, LangOpts) &&
+ !startsWithUnderscoreCapital(Name) &&
+ !startsWithUnderscoreInGlobalNamespace(Name, IsInGlobalNamespace,
+ IsMacro))
return FailureInfo{NonReservedTag, getNonReservedFixup(std::string(Name))};
return std::nullopt;
}
diff --git a/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
index f2067bec001cc..fd5dca835b676 100644
--- a/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/SuspiciousEnumUsageCheck.cpp
@@ -100,7 +100,7 @@ static bool isPossiblyBitMask(const EnumDecl *EnumDec) {
return NonPowOfTwoCounter >= 1 && NonPowOfTwoCounter <= 2 &&
NonPowOfTwoCounter < EnumLen / 2 &&
(VR.MaxVal - VR.MinVal != EnumLen - 1) &&
- !(NonPowOfTwoCounter == 1 && isMaxValAllBitSetLiteral(EnumDec));
+ (NonPowOfTwoCounter != 1 || !isMaxValAllBitSetLiteral(EnumDec));
}
SuspiciousEnumUsageCheck::SuspiciousEnumUsageCheck(StringRef Name,
diff --git a/clang-tools-extra/clang-tidy/bugprone/VirtualNearMissCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/VirtualNearMissCheck.cpp
index 509fce3a38471..ee286136a766b 100644
--- a/clang-tools-extra/clang-tidy/bugprone/VirtualNearMissCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/VirtualNearMissCheck.cpp
@@ -56,8 +56,8 @@ static bool checkOverridingFunctionReturnType(const ASTContext *Context,
/// Check if the return types are covariant.
// Both types must be pointers or references to classes.
- if (!(BaseReturnTy->isPointerType() && DerivedReturnTy->isPointerType()) &&
- !(BaseReturnTy->isReferenceType() && DerivedReturnTy->isReferenceType()))
+ if ((!BaseReturnTy->isPointerType() || !DerivedReturnTy->isPointerType()) &&
+ (!BaseReturnTy->isReferenceType() || !DerivedReturnTy->isReferenceType()))
return false;
/// BTy is the class type in return type of BaseMD. For example,
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
index 0b6b8d9c97135..13cb16ba84595 100644
--- a/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
@@ -228,9 +228,9 @@ void SpecialMemberFunctionsCheck::checkForMissingMembers(
}
if (RequireFive &&
- !(AllowMissingMoveFunctionsWhenCopyIsDeleted &&
- (IsDeleted(SpecialMemberFunctionKind::CopyConstructor) &&
- IsDeleted(SpecialMemberFunctionKind::CopyAssignment)))) {
+ (!AllowMissingMoveFunctionsWhenCopyIsDeleted ||
+ !IsDeleted(SpecialMemberFunctionKind::CopyConstructor) ||
+ !IsDeleted(SpecialMemberFunctionKind::CopyAssignment))) {
assert(RequireThree);
RequireMembers(SpecialMemberFunctionKind::MoveConstructor,
SpecialMemberFunctionKind::MoveAssignment);
diff --git a/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp b/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp
index adcbf245ef7a3..cc1b01fa78908 100644
--- a/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp
+++ b/clang-tools-extra/clang-tidy/google/AvoidNSObjectNewCheck.cpp
@@ -27,10 +27,7 @@ static bool isMessageExpressionInsideMacro(const ObjCMessageExpr *Expr) {
return true;
SourceLocation SelectorLocation = Expr->getSelectorStartLoc();
- if (SelectorLocation.isMacroID())
- return true;
-
- return false;
+ return SelectorLocation.isMacroID();
}
// Walk up the class hierarchy looking for an -init method, returning true
diff --git a/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp b/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp
index c2fbc4422e5d2..6325f434be4ce 100644
--- a/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp
+++ b/clang-tools-extra/clang-tidy/llvmlibc/ImplementationInNamespaceCheck.cpp
@@ -39,7 +39,7 @@ void ImplementationInNamespaceCheck::check(
}
// Enforce that the namespace is the result of macro expansion
- if (Result.SourceManager->isMacroBodyExpansion(NS->getLocation()) == false) {
+ if (!Result.SourceManager->isMacroBodyExpansion(NS->getLocation())) {
diag(NS->getLocation(), "the outermost namespace should be the '%0' macro")
<< RequiredNamespaceDeclMacroName;
return;
@@ -55,7 +55,7 @@ void ImplementationInNamespaceCheck::check(
}
// Lastly, make sure the namespace name actually has the __llvm_libc prefix
- if (NS->getName().starts_with(RequiredNamespaceRefStart) == false) {
+ if (!NS->getName().starts_with(RequiredNamespaceRefStart)) {
diag(NS->getLocation(), "the '%0' macro expansion should start with '%1'")
<< RequiredNamespaceDeclMacroName << RequiredNamespaceRefStart;
return;
diff --git a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp
index b32507d66cbac..18b3b8bdf9474 100644
--- a/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/ConstCorrectnessCheck.cpp
@@ -54,8 +54,8 @@ ConstCorrectnessCheck::ConstCorrectnessCheck(StringRef Name,
AllowedTypes(
utils::options::parseStringList(Options.get("AllowedTypes", ""))) {
- if (AnalyzeValues == false && AnalyzeReferences == false &&
- AnalyzePointers == false)
+ if (!AnalyzeValues && !AnalyzeReferences &&
+ !AnalyzePointers)
this->configurationDiag(
"The check 'misc-const-correctness' will not "
"perform any analysis because 'AnalyzeValues', "
diff --git a/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp b/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
index 813005b892ed7..74ef936ff8e95 100644
--- a/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/IncludeCleanerCheck.cpp
@@ -70,7 +70,7 @@ IncludeCleanerCheck::IncludeCleanerCheck(StringRef Name,
IgnoreHeadersRegex.emplace_back(HeaderSuffix);
}
- if (UnusedIncludes == false && MissingIncludes == false)
+ if (!UnusedIncludes && !MissingIncludes)
this->configurationDiag("The check 'misc-include-cleaner' will not "
"perform any analysis because 'UnusedIncludes' and "
"'MissingIncludes' are both false.");
diff --git a/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp b/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp
index 2837f40bc49b8..89146e4cac0e8 100644
--- a/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/NewDeleteOverloadsCheck.cpp
@@ -52,11 +52,8 @@ AST_MATCHER(FunctionDecl, isPlacementOverload) {
const auto *FPT = Node.getType()->castAs<FunctionProtoType>();
ASTContext &Ctx = Node.getASTContext();
- if (Ctx.getLangOpts().SizedDeallocation &&
- Ctx.hasSameType(FPT->getParamType(1), Ctx.getSizeType()))
- return false;
-
- return true;
+ return !(Ctx.getLangOpts().SizedDeallocation &&
+ Ctx.hasSameType(FPT->getParamType(1), Ctx.getSizeType()));
}
} // namespace
diff --git a/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp b/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
index 107eda2e98f27..0a996aeffee02 100644
--- a/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
@@ -196,12 +196,9 @@ static bool areExclusiveRanges(BinaryOperatorKind OpcodeLHS,
// Handle the case where constants are off by one: x > 5 && x < 6.
APSInt ValueLhsPlus1;
- if (OpcodeLHS == BO_GT && OpcodeRHS == BO_LT &&
+ return OpcodeLHS == BO_GT && OpcodeRHS == BO_LT &&
incrementWithoutOverflow(ValueLHS, ValueLhsPlus1) &&
- APSInt::compareValues(ValueLhsPlus1, ValueRHS) == 0)
- return true;
-
- return false;
+ APSInt::compareValues(ValueLhsPlus1, ValueRHS) == 0;
}
// Returns whether the ranges covered by the union of both relational
@@ -726,12 +723,10 @@ static bool areSidesBinaryConstExpressions(const BinaryOperator *&BinOp,
return !E->isValueDependent() && E->isIntegerConstantExpr(*AstCtx);
};
- if ((IsIntegerConstantExpr(LhsBinOp->getLHS()) ||
+ return (IsIntegerConstantExpr(LhsBinOp->getLHS()) ||
IsIntegerConstantExpr(LhsBinOp->getRHS())) &&
(IsIntegerConstantExpr(RhsBinOp->getLHS()) ||
- IsIntegerConstantExpr(RhsBinOp->getRHS())))
- return true;
- return false;
+ IsIntegerConstantExpr(RhsBinOp->getRHS()));
}
static bool areSidesBinaryConstExpressionsOrDefinesOrIntegerConstant(
@@ -747,10 +742,8 @@ static bool areSidesBinaryConstExpressionsOrDefinesOrIntegerConstant(
auto IsDefineExpr = [AstCtx](const Expr *E) {
const SourceRange Lsr = E->getSourceRange();
- if (!Lsr.getBegin().isMacroID() || E->isValueDependent() ||
- !E->isIntegerConstantExpr(*AstCtx))
- return false;
- return true;
+ return !(!Lsr.getBegin().isMacroID() || E->isValueDependent() ||
+ !E->isIntegerConstantExpr(*AstCtx));
};
return IsDefineExpr(Lhs) || IsDefineExpr(Rhs);
diff --git a/clang-tools-extra/clang-tidy/modernize/PassByValueCheck.cpp b/clang-tools-extra/clang-tidy/modernize/PassByValueCheck.cpp
index a54d0721a5b7d..133ec90f356d2 100644
--- a/clang-tools-extra/clang-tidy/modernize/PassByValueCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/PassByValueCheck.cpp
@@ -188,7 +188,7 @@ static bool hasRValueOverload(const CXXConstructorDecl *Ctor,
return false;
} else {
// All other parameters can be similar or paired.
- if (!(CandidateParamType == CtorParamType || IsLValueRValuePair))
+ if (!CandidateParamType == CtorParamType && !IsLValueRValuePair)
return false;
}
}
diff --git a/clang-tools-extra/clang-tidy/modernize/ReplaceDisallowCopyAndAssignMacroCheck.cpp b/clang-tools-extra/clang-tidy/modernize/ReplaceDisallowCopyAndAssignMacroCheck.cpp
index 42be7d7a7b78c..f701ac326b6d8 100644
--- a/clang-tools-extra/clang-tidy/modernize/ReplaceDisallowCopyAndAssignMacroCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/ReplaceDisallowCopyAndAssignMacroCheck.cpp
@@ -61,7 +61,7 @@ const {0} &operator=(const {0} &) = delete{1})cpp",
bool shouldAppendSemi(SourceRange MacroLoc) {
std::optional<Token> Next = Lexer::findNextToken(
MacroLoc.getEnd(), PP.getSourceManager(), PP.getLangOpts());
- return !(Next && Next->is(tok::semi));
+ return !Next || !Next->is(tok::semi);
}
ReplaceDisallowCopyAndAssignMacroCheck &Check;
diff --git a/clang-tools-extra/clang-tidy/modernize/UseNodiscardCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseNodiscardCheck.cpp
index 6de80dcb99c60..ce6bf21ab8c30 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseNodiscardCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseNodiscardCheck.cpp
@@ -54,7 +54,7 @@ AST_MATCHER(CXXMethodDecl, hasTemplateReturnType) {
}
AST_MATCHER(CXXMethodDecl, isDefinitionOrInline) {
// A function definition, with optional inline but not the declaration.
- return !(Node.isThisDeclarationADefinition() && Node.isOutOfLine());
+ return !Node.isThisDeclarationADefinition() || !Node.isOutOfLine();
}
AST_MATCHER(QualType, isInstantiationDependentType) {
return Node->isInstantiationDependentType();
diff --git a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
index 82f64096cbec1..5da009fa7ef9b 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
@@ -410,7 +410,7 @@ static void keepSpecifiers(std::string &ReturnType, std::string &Auto,
const auto *M = dyn_cast<CXXMethodDecl>(&F);
if (!F.isConstexpr() && !F.isInlineSpecified() &&
F.getStorageClass() != SC_Extern && F.getStorageClass() != SC_Static &&
- !Fr && !(M && M->isVirtualAsWritten()))
+ !Fr && (!M || !M->isVirtualAsWritten()))
return;
// Tokenize return type. If it contains macros which contain a mix of
@@ -459,7 +459,7 @@ UseTrailingReturnTypeCheck::UseTrailingReturnTypeCheck(
TransformFunctions(Options.get("TransformFunctions", true)),
TransformLambdas(Options.get("TransformLambdas", TransformLambda::All)) {
- if (TransformFunctions == false && TransformLambdas == TransformLambda::None)
+ if (!TransformFunctions && TransformLambdas == TransformLambda::None)
this->configurationDiag(
"The check 'modernize-use-trailing-return-type' will not perform any "
"analysis because 'TransformFunctions' and 'TransformLambdas' are "
diff --git a/clang-tools-extra/clang-tidy/objc/NSDateFormatterCheck.cpp b/clang-tools-extra/clang-tidy/objc/NSDateFormatterCheck.cpp
index 79e9d97d9594b..15c4bfe16060a 100644
--- a/clang-tools-extra/clang-tidy/objc/NSDateFormatterCheck.cpp
+++ b/clang-tools-extra/clang-tidy/objc/NSDateFormatterCheck.cpp
@@ -60,7 +60,7 @@ void NSDateFormatterCheck::check(const MatchFinder::MatchResult &Result) {
"did you mean to use week-year (Y) instead?");
}
if (SR.contains('F')) {
- if (!(SR.contains('e') || SR.contains('E'))) {
+ if (!SR.contains('e') && !SR.contains('E')) {
diag(StrExpr->getExprLoc(),
"day of week in month (F) used without day of the week (e or E); "
"did you forget e (or E) in the format string?");
diff --git a/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp b/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp
index f458e26d964b0..b1fc07a4f5590 100644
--- a/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp
+++ b/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp
@@ -216,8 +216,8 @@ void MoveConstArgCheck::check(const MatchFinder::MatchResult &Result) {
if (const CXXRecordDecl *RecordDecl = ArgType->getAsCXXRecordDecl();
RecordDecl && RecordDecl->hasDefinition() &&
- !(RecordDecl->hasMoveConstructor() &&
- RecordDecl->hasMoveAssignment())) {
+ (!RecordDecl->hasMoveConstructor() ||
+ !RecordDecl->hasMoveAssignment())) {
const bool MissingMoveAssignment = !RecordDecl->hasMoveAssignment();
const bool MissingMoveConstructor = !RecordDecl->hasMoveConstructor();
const bool MissingBoth = MissingMoveAssignment && MissingMoveConstructor;
diff --git a/clang-tools-extra/clang-tidy/portability/SIMDIntrinsicsCheck.cpp b/clang-tools-extra/clang-tidy/portability/SIMDIntrinsicsCheck.cpp
index f4bd4c3d5657d..6d74c9cff947b 100644
--- a/clang-tools-extra/clang-tidy/portability/SIMDIntrinsicsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/portability/SIMDIntrinsicsCheck.cpp
@@ -52,8 +52,8 @@ static StringRef trySuggestPpc(StringRef Name) {
}
static StringRef trySuggestX86(StringRef Name) {
- if (!(Name.consume_front("_mm_") || Name.consume_front("_mm256_") ||
- Name.consume_front("_mm512_")))
+ if (!Name.consume_front("_mm_") && !Name.consume_front("_mm256_") &&
+ !Name.consume_front("_mm512_"))
return {};
// [simd.alg]
diff --git a/clang-tools-extra/clang-tidy/readability/FunctionSizeCheck.cpp b/clang-tools-extra/clang-tidy/readability/FunctionSizeCheck.cpp
index 8e3a2e306dbf7..750ae49e115fb 100644
--- a/clang-tools-extra/clang-tidy/readability/FunctionSizeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/FunctionSizeCheck.cpp
@@ -24,7 +24,7 @@ class FunctionASTVisitor : public RecursiveASTVisitor<FunctionASTVisitor> {
// Do not count function params.
// Do not count decomposition declarations (C++17's structured bindings).
if (StructNesting == 0 &&
- !(isa<ParmVarDecl>(VD) || isa<DecompositionDecl>(VD)))
+ !isa<ParmVarDecl>(VD) && !isa<DecompositionDecl>(VD))
++Info.Variables;
return true;
}
diff --git a/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp b/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
index 6b10e6b206a31..bd91fa6eec6c9 100644
--- a/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/ImplicitBoolConversionCheck.cpp
@@ -209,7 +209,7 @@ getEquivalentForBoolLiteral(const CXXBoolLiteralExpr *BoolLiteral,
// Prior to C++11, false literal could be implicitly converted to pointer.
if (!Context.getLangOpts().CPlusPlus11 &&
(DestType->isPointerType() || DestType->isMemberPointerType()) &&
- BoolLiteral->getValue() == false) {
+ !BoolLiteral->getValue()) {
return "0";
}
diff --git a/clang-tools-extra/clang-tidy/readability/NonConstParameterCheck.cpp b/clang-tools-extra/clang-tidy/readability/NonConstParameterCheck.cpp
index 07071a1f6d2fe..3f6ce36267761 100644
--- a/clang-tools-extra/clang-tidy/readability/NonConstParameterCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/NonConstParameterCheck.cpp
@@ -115,8 +115,8 @@ void NonConstParameterCheck::addParm(const ParmVarDecl *Parm) {
// Only add nonconst integer/float pointer parameters.
const QualType T = Parm->getType();
if (!T->isPointerType() || T->getPointeeType().isConstQualified() ||
- !(T->getPointeeType()->isIntegerType() ||
- T->getPointeeType()->isFloatingType()))
+ (!T->getPointeeType()->isIntegerType() &&
+ !T->getPointeeType()->isFloatingType()))
return;
auto [It, Inserted] = Parameters.try_emplace(Parm);
diff --git a/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp b/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp
index a80637dee18f4..66127cc7f0345 100644
--- a/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp
@@ -413,14 +413,11 @@ static bool areTypesCompatible(QualType ArgType, QualType ParamType,
// Arithmetic types are interconvertible, except scoped enums.
if (ParamType->isArithmeticType() && ArgType->isArithmeticType()) {
- if ((ParamType->isEnumeralType() && ParamType->castAsCanonical<EnumType>()
+ return !((ParamType->isEnumeralType() && ParamType->castAsCanonical<EnumType>()
->getOriginalDecl()
->isScoped()) ||
(ArgType->isEnumeralType() &&
- ArgType->castAsCanonical<EnumType>()->getOriginalDecl()->isScoped()))
- return false;
-
- return true;
+ ArgType->castAsCanonical<EnumType>()->getOriginalDecl()->isScoped()));
}
// Check if the argument and the param are both function types (the parameter
@@ -431,7 +428,7 @@ static bool areTypesCompatible(QualType ArgType, QualType ParamType,
}
// Arrays or pointer arguments convert to array or pointer parameters.
- if (!(isPointerOrArray(ArgType) && isPointerOrArray(ParamType)))
+ if (!isPointerOrArray(ArgType) || !isPointerOrArray(ParamType))
return false;
// When ParamType is an array reference, ArgType has to be of the same-sized
@@ -472,7 +469,7 @@ static bool areTypesCompatible(QualType ArgType, QualType ParamType,
// Unless argument and param are both multilevel pointers, the types are not
// convertible.
- if (!(ParamType->isAnyPointerType() && ArgType->isAnyPointerType()))
+ if (!ParamType->isAnyPointerType() || !ArgType->isAnyPointerType())
return false;
return arePointerTypesCompatible(ArgType, ParamType, IsParamContinuouslyConst,
diff --git a/clang-tools-extra/clang-tidy/utils/FixItHintUtils.cpp b/clang-tools-extra/clang-tidy/utils/FixItHintUtils.cpp
index a15589f9721c7..389048ef8cc0b 100644
--- a/clang-tools-extra/clang-tidy/utils/FixItHintUtils.cpp
+++ b/clang-tools-extra/clang-tidy/utils/FixItHintUtils.cpp
@@ -29,8 +29,8 @@ FixItHint changeVarDeclToReference(const VarDecl &Var, ASTContext &Context) {
}
static bool isValueType(const Type *T) {
- return !(isa<PointerType>(T) || isa<ReferenceType>(T) || isa<ArrayType>(T) ||
- isa<MemberPointerType>(T) || isa<ObjCObjectPointerType>(T));
+ return !isa<PointerType>(T) && !isa<ReferenceType>(T) && !isa<ArrayType>(T) &&
+ !isa<MemberPointerType>(T) && !isa<ObjCObjectPointerType>(T);
}
static bool isValueType(QualType QT) { return isValueType(QT.getTypePtr()); }
static bool isMemberOrFunctionPointer(QualType QT) {
More information about the cfe-commits
mailing list