Author: Baranov Victor Date: 2026-08-07T14:29:32+03:00 New Revision: 1533fd95be9ff691b0bd70e589ffa273cf64e9db
URL: https://github.com/llvm/llvm-project/commit/1533fd95be9ff691b0bd70e589ffa273cf64e9db DIFF: https://github.com/llvm/llvm-project/commit/1533fd95be9ff691b0bd70e589ffa273cf64e9db.diff LOG: [clang-tidy][NFC] Apply readability-redundant-nested-if 3/N (#214693) Added: Modified: clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp clang-tools-extra/clang-tidy/performance/UseStdMoveCheck.cpp clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp clang-tools-extra/clang-tidy/readability/MakeMemberFunctionConstCheck.cpp clang-tools-extra/clang-tidy/readability/NamedParameterCheck.cpp clang-tools-extra/clang-tidy/readability/NonConstParameterCheck.cpp clang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.cpp clang-tools-extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp clang-tools-extra/clang-tidy/utils/ASTUtils.cpp clang-tools-extra/clang-tidy/utils/Aliasing.cpp clang-tools-extra/clang-tidy/utils/ExceptionAnalyzer.cpp clang-tools-extra/clang-tidy/utils/ExprSequence.cpp clang-tools-extra/clang-tidy/utils/FixItHintUtils.cpp clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp clang-tools-extra/clang-tidy/utils/NamespaceAliaser.cpp clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp b/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp index be6a4f30e610e..e74620739d94f 100644 --- a/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp +++ b/clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp @@ -88,11 +88,10 @@ static bool isRValueReferenceParam(const Expr *Invocation, return true; if (const auto *ConstructCallExpr = dyn_cast<CXXConstructExpr>(Invocation)) { - if (const auto *ConstructorDecl = ConstructCallExpr->getConstructor()) { - if (!ConstructorDecl->isCopyOrMoveConstructor() && - !ConstructorDecl->isDefaultConstructor()) - return true; - } + if (const auto *ConstructorDecl = ConstructCallExpr->getConstructor(); + ConstructorDecl && !ConstructorDecl->isCopyOrMoveConstructor() && + !ConstructorDecl->isDefaultConstructor()) + return true; } } return false; diff --git a/clang-tools-extra/clang-tidy/performance/UseStdMoveCheck.cpp b/clang-tools-extra/clang-tidy/performance/UseStdMoveCheck.cpp index e2ea0cd112a3f..e887a9862ca5f 100644 --- a/clang-tools-extra/clang-tidy/performance/UseStdMoveCheck.cpp +++ b/clang-tools-extra/clang-tidy/performance/UseStdMoveCheck.cpp @@ -175,10 +175,8 @@ void UseStdMoveCheck::check(const MatchFinder::MatchResult &Result) { if (!S.isReachable()) continue; auto &W = CFGState.find(&*S)->second; - if (W.Ready) { - if (--W.RemainingSuccessors == 0) - WorkList.push_back(&*S); - } + if (W.Ready && --W.RemainingSuccessors == 0) + WorkList.push_back(&*S); } } } diff --git a/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp b/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp index c5fbd3022756d..2db5385052843 100644 --- a/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp @@ -339,13 +339,12 @@ void ContainerSizeEmptyCheck::check(const MatchFinder::MatchResult &Result) { return; // Always true/false, no warnings for that. - if (Value == 0) { - if ((OpCode == BinaryOperatorKind::BO_GT && !ContainerIsLHS) || - (OpCode == BinaryOperatorKind::BO_LT && ContainerIsLHS) || - (OpCode == BinaryOperatorKind::BO_LE && !ContainerIsLHS) || - (OpCode == BinaryOperatorKind::BO_GE && ContainerIsLHS)) - return; - } + if (Value == 0 && + ((OpCode == BinaryOperatorKind::BO_GT && !ContainerIsLHS) || + (OpCode == BinaryOperatorKind::BO_LT && ContainerIsLHS) || + (OpCode == BinaryOperatorKind::BO_LE && !ContainerIsLHS) || + (OpCode == BinaryOperatorKind::BO_GE && ContainerIsLHS))) + return; // Do not warn for size > 1, 1 < size, size <= 1, 1 >= size. if (Value == 1) { diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp index 86cc399611a83..dfbd061986128 100644 --- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp @@ -1241,9 +1241,9 @@ StyleKind IdentifierNamingCheck::findStyleKind( // C++17 structured bindings: treat each binding as if it were a variable // with the same storage and qualifiers as the parent DecompositionDecl. if (const auto *BD = dyn_cast<BindingDecl>(D)) { - if (const auto *Decomp = dyn_cast_or_null<VarDecl>(BD->getDecomposedDecl())) - if (!BD->getType().isNull()) - return findStyleKindForVar(Decomp, BD->getType(), NamingStyles); + if (const auto *Decomp = dyn_cast_or_null<VarDecl>(BD->getDecomposedDecl()); + Decomp && !BD->getType().isNull()) + return findStyleKindForVar(Decomp, BD->getType(), NamingStyles); return SK_Invalid; } @@ -1255,9 +1255,9 @@ StyleKind IdentifierNamingCheck::findStyleKind( // If this method has the same name as any base method, this is likely // necessary even if it's not an override. e.g. CRTP. for (const CXXBaseSpecifier &Base : Decl->getParent()->bases()) - if (const auto *RD = Base.getType()->getAsCXXRecordDecl()) - if (RD->hasMemberName(Decl->getDeclName())) - return SK_Invalid; + if (const auto *RD = Base.getType()->getAsCXXRecordDecl(); + RD && RD->hasMemberName(Decl->getDeclName())) + return SK_Invalid; if (Decl->isConstexpr() && NamingStyles[SK_ConstexprMethod]) return SK_ConstexprMethod; diff --git a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp index acf9503f265fe..c0b11b7fc1afb 100644 --- a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp @@ -178,9 +178,10 @@ bool MagicNumbersCheck::isConstant(const MatchFinder::MatchResult &Result, // Don't warn on string user defined literals: // std::string s = "Hello World"s; - if (const auto *UDL = Parent.get<UserDefinedLiteral>()) - if (UDL->getLiteralOperatorKind() == UserDefinedLiteral::LOK_String) - return true; + if (const auto *UDL = Parent.get<UserDefinedLiteral>(); + UDL && + UDL->getLiteralOperatorKind() == UserDefinedLiteral::LOK_String) + return true; return false; }); diff --git a/clang-tools-extra/clang-tidy/readability/MakeMemberFunctionConstCheck.cpp b/clang-tools-extra/clang-tidy/readability/MakeMemberFunctionConstCheck.cpp index 967c63db51dd7..e33a045095147 100644 --- a/clang-tools-extra/clang-tidy/readability/MakeMemberFunctionConstCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/MakeMemberFunctionConstCheck.cpp @@ -177,10 +177,9 @@ class FindUsageOfThis : public RecursiveASTVisitor<FindUsageOfThis> { const auto *Parent = getParentExprIgnoreParens(E); // Look through deref of this. - if (const auto *UnOp = dyn_cast_or_null<UnaryOperator>(Parent)) { - if (UnOp->getOpcode() == UO_Deref) - Parent = getParentExprIgnoreParens(UnOp); - } + if (const auto *UnOp = dyn_cast_or_null<UnaryOperator>(Parent); + UnOp && UnOp->getOpcode() == UO_Deref) + Parent = getParentExprIgnoreParens(UnOp); // It's okay to // return (const S*)this; @@ -195,9 +194,9 @@ class FindUsageOfThis : public RecursiveASTVisitor<FindUsageOfThis> { // (const T)(S->t) // (LValueToRValue)(S->t) // when 't' is either of builtin type or a public member. - } else if (const auto *Member = dyn_cast_or_null<MemberExpr>(Parent)) { - if (visitUser(Member, /*OnConstObject=*/false)) - return true; + } else if (const auto *Member = dyn_cast_or_null<MemberExpr>(Parent); + Member && visitUser(Member, /*OnConstObject=*/false)) { + return true; } // Unknown user of this. diff --git a/clang-tools-extra/clang-tidy/readability/NamedParameterCheck.cpp b/clang-tools-extra/clang-tidy/readability/NamedParameterCheck.cpp index a7bd42e7b39f0..07d1bbeccbc16 100644 --- a/clang-tools-extra/clang-tidy/readability/NamedParameterCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/NamedParameterCheck.cpp @@ -100,9 +100,10 @@ void NamedParameterCheck::check(const MatchFinder::MatchResult &Result) { continue; // Skip gmock testing::Unused parameters. - if (const auto *Typedef = Parm->getType()->getAs<TypedefType>()) - if (Typedef->getDecl()->getQualifiedNameAsString() == "testing::Unused") - continue; + if (const auto *Typedef = Parm->getType()->getAs<TypedefType>(); + Typedef && + Typedef->getDecl()->getQualifiedNameAsString() == "testing::Unused") + continue; // Skip std::nullptr_t. if (Parm->getType().getCanonicalType()->isNullPtrType()) diff --git a/clang-tools-extra/clang-tidy/readability/NonConstParameterCheck.cpp b/clang-tools-extra/clang-tidy/readability/NonConstParameterCheck.cpp index 4bfe816fd6004..12113fa3b570a 100644 --- a/clang-tools-extra/clang-tidy/readability/NonConstParameterCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/NonConstParameterCheck.cpp @@ -75,10 +75,9 @@ void NonConstParameterCheck::registerMatchers(MatchFinder *Finder) { void NonConstParameterCheck::check(const MatchFinder::MatchResult &Result) { if (const auto *Parm = Result.Nodes.getNodeAs<ParmVarDecl>("Parm")) { if (const DeclContext *D = Parm->getParentFunctionOrMethod()) { - if (const auto *M = dyn_cast<CXXMethodDecl>(D)) { - if (M->isVirtual() || M->size_overridden_methods() != 0) - return; - } + if (const auto *M = dyn_cast<CXXMethodDecl>(D); + M && (M->isVirtual() || M->size_overridden_methods() != 0)) + return; } addParm(Parm); } else if (const auto *Ctor = diff --git a/clang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.cpp b/clang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.cpp index 069350599d270..9e55613f0b969 100644 --- a/clang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.cpp @@ -136,18 +136,18 @@ void RedundantStringInitCheck::check(const MatchFinder::MatchResult &Result) { } if (const auto *CtorInit = Result.Nodes.getNodeAs<CXXCtorInitializer>("ctorInit")) { - if (const FieldDecl *Member = CtorInit->getMember()) { - if (!Member->hasInClassInitializer() || - Result.Nodes.getNodeAs<Expr>("empty_init")) { - // The String isn't declared in the class with an initializer or its - // declared with a redundant initializer, which will be removed. Either - // way the string will be default initialized, therefore we can remove - // the constructor initializer entirely. - diag(CtorInit->getMemberLocation(), "redundant string initialization") - << FixItHint::CreateRemoval(CtorInit->getSourceRange()); - return; - } + if (const FieldDecl *Member = CtorInit->getMember(); + Member && (!Member->hasInClassInitializer() || + Result.Nodes.getNodeAs<Expr>("empty_init"))) { + // The String isn't declared in the class with an initializer or its + // declared with a redundant initializer, which will be removed. Either + // way the string will be default initialized, therefore we can remove + // the constructor initializer entirely. + diag(CtorInit->getMemberLocation(), "redundant string initialization") + << FixItHint::CreateRemoval(CtorInit->getSourceRange()); + return; } + const CXXConstructExpr *Construct = getConstructExpr(*CtorInit); if (!Construct) return; diff --git a/clang-tools-extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp b/clang-tools-extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp index cc82e052d58da..3a63b6f84eed3 100644 --- a/clang-tools-extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp @@ -116,17 +116,15 @@ static bool needsZeroComparison(const Expr *E) { } static bool needsStaticCast(const Expr *E) { - if (const auto *ImpCast = dyn_cast<ImplicitCastExpr>(E)) { - if (ImpCast->getCastKind() == CK_UserDefinedConversion && - ImpCast->getSubExpr()->getType()->isBooleanType()) { - if (const auto *MemCall = - dyn_cast<CXXMemberCallExpr>(ImpCast->getSubExpr())) { - if (const auto *MemDecl = - dyn_cast<CXXConversionDecl>(MemCall->getMethodDecl())) { - if (MemDecl->isExplicit()) - return true; - } - } + if (const auto *ImpCast = dyn_cast<ImplicitCastExpr>(E); + ImpCast && ImpCast->getCastKind() == CK_UserDefinedConversion && + ImpCast->getSubExpr()->getType()->isBooleanType()) { + if (const auto *MemCall = + dyn_cast<CXXMemberCallExpr>(ImpCast->getSubExpr())) { + if (const auto *MemDecl = + dyn_cast<CXXConversionDecl>(MemCall->getMethodDecl()); + MemDecl && MemDecl->isExplicit()) + return true; } } @@ -165,16 +163,15 @@ static std::string replacementExpression(const ASTContext &Context, const bool NeedsStaticCast = Context.getLangOpts().CPlusPlus && needsStaticCast(E); if (Negated) { - if (const auto *UnOp = dyn_cast<UnaryOperator>(E)) { - if (UnOp->getOpcode() == UO_LNot) { - if (needsNullPtrComparison(UnOp->getSubExpr())) - return compareExpressionToNullPtr(Context, UnOp->getSubExpr(), true); + if (const auto *UnOp = dyn_cast<UnaryOperator>(E); + UnOp && UnOp->getOpcode() == UO_LNot) { + if (needsNullPtrComparison(UnOp->getSubExpr())) + return compareExpressionToNullPtr(Context, UnOp->getSubExpr(), true); - if (needsZeroComparison(UnOp->getSubExpr())) - return compareExpressionToZero(Context, UnOp->getSubExpr(), true); + if (needsZeroComparison(UnOp->getSubExpr())) + return compareExpressionToZero(Context, UnOp->getSubExpr(), true); - return replacementExpression(Context, false, UnOp->getSubExpr()); - } + return replacementExpression(Context, false, UnOp->getSubExpr()); } if (needsNullPtrComparison(E)) @@ -190,13 +187,13 @@ static std::string replacementExpression(const ASTContext &Context, NegatedOperator = negatedOperator(BinOp); LHS = BinOp->getLHS(); RHS = BinOp->getRHS(); - } else if (const auto *OpExpr = dyn_cast<CXXOperatorCallExpr>(E)) { - if (OpExpr->getNumArgs() == 2) { - NegatedOperator = negatedOperator(OpExpr); - LHS = OpExpr->getArg(0); - RHS = OpExpr->getArg(1); - } + } else if (const auto *OpExpr = dyn_cast<CXXOperatorCallExpr>(E); + OpExpr && OpExpr->getNumArgs() == 2) { + NegatedOperator = negatedOperator(OpExpr); + LHS = OpExpr->getArg(0); + RHS = OpExpr->getArg(1); } + if (!NegatedOperator.empty() && LHS && RHS) return (asBool((getText(Context, *LHS) + " " + NegatedOperator + " " + getText(Context, *RHS)) @@ -216,14 +213,13 @@ static std::string replacementExpression(const ASTContext &Context, return ("!" + asBool(Text, NeedsStaticCast)); } - if (const auto *UnOp = dyn_cast<UnaryOperator>(E)) { - if (UnOp->getOpcode() == UO_LNot) { - if (needsNullPtrComparison(UnOp->getSubExpr())) - return compareExpressionToNullPtr(Context, UnOp->getSubExpr(), false); + if (const auto *UnOp = dyn_cast<UnaryOperator>(E); + UnOp && UnOp->getOpcode() == UO_LNot) { + if (needsNullPtrComparison(UnOp->getSubExpr())) + return compareExpressionToNullPtr(Context, UnOp->getSubExpr(), false); - if (needsZeroComparison(UnOp->getSubExpr())) - return compareExpressionToZero(Context, UnOp->getSubExpr(), false); - } + if (needsZeroComparison(UnOp->getSubExpr())) + return compareExpressionToZero(Context, UnOp->getSubExpr(), false); } if (needsNullPtrComparison(E)) @@ -421,12 +417,11 @@ class SimplifyBooleanExprCheck::Visitor : public RecursiveASTVisitor<Visitor> { const DeclAndBool ElseAssignment = checkSingleStatement(If->getElse(), VarBoolAssignmentMatcher); if (ElseAssignment.Item == ThenAssignment.Item && - ElseAssignment.Bool != ThenAssignment.Bool) { - if (Check->ChainedConditionalAssignment || - !isa_and_nonnull<IfStmt>(parent())) { - Check->replaceWithAssignment(Context, If, Var, Loc, - ElseAssignment.Bool); - } + ElseAssignment.Bool != ThenAssignment.Bool && + (Check->ChainedConditionalAssignment || + !isa_and_nonnull<IfStmt>(parent()))) { + Check->replaceWithAssignment(Context, If, Var, Loc, + ElseAssignment.Bool); } } } @@ -563,19 +558,20 @@ class SimplifyBooleanExprCheck::Visitor : public RecursiveASTVisitor<Visitor> { if (!isExpectedBinaryOp(SubExpr)) return Base::TraverseUnaryOperator(Op); const auto *BinaryOp = cast<BinaryOperator>(SubExpr); - if (Check->SimplifyDeMorganRelaxed || - checkEitherSide( - BinaryOp, - [this](const Expr *E) { return isExpectedUnaryLNot(E); }) || - checkEitherSide( - BinaryOp, [this](const Expr *E) { return nestedDemorgan(E, 1); })) { - if (Check->reportDeMorgan(Context, Op, BinaryOp, !IsProcessing, parent(), - Parens) && - !Check->areDiagsSelfContained()) { - const llvm::SaveAndRestore RAII(IsProcessing, true); - return Base::TraverseUnaryOperator(Op); - } + if ((Check->SimplifyDeMorganRelaxed || + checkEitherSide( + BinaryOp, + [this](const Expr *E) { return isExpectedUnaryLNot(E); }) || + checkEitherSide( + BinaryOp, + [this](const Expr *E) { return nestedDemorgan(E, 1); })) && + Check->reportDeMorgan(Context, Op, BinaryOp, !IsProcessing, parent(), + Parens) && + !Check->areDiagsSelfContained()) { + const llvm::SaveAndRestore RAII(IsProcessing, true); + return Base::TraverseUnaryOperator(Op); } + return Base::TraverseUnaryOperator(Op); } @@ -851,13 +847,12 @@ flipDemorganBinaryOperator(SmallVectorImpl<FixItHint> &Fixes, constexpr bool LogicalOpParentheses = true; if (((*OuterBO == NewOp) || (!LogicalOpParentheses && (*OuterBO == BO_LOr && NewOp == BO_LAnd))) && - Parens) { - if (!Parens->getLParen().isMacroID() && - !Parens->getRParen().isMacroID()) { - Fixes.push_back(FixItHint::CreateRemoval(Parens->getLParen())); - Fixes.push_back(FixItHint::CreateRemoval(Parens->getRParen())); - } + Parens && !Parens->getLParen().isMacroID() && + !Parens->getRParen().isMacroID()) { + Fixes.push_back(FixItHint::CreateRemoval(Parens->getLParen())); + Fixes.push_back(FixItHint::CreateRemoval(Parens->getRParen())); } + if (*OuterBO == BO_LAnd && NewOp == BO_LOr && !Parens) { Fixes.push_back(FixItHint::CreateInsertion(BinOp->getBeginLoc(), "(")); Fixes.push_back(FixItHint::CreateInsertion( diff --git a/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp b/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp index 854bd1dae9e30..49c327ad77177 100644 --- a/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp @@ -726,12 +726,11 @@ void SuspiciousCallArgumentCheck::setArgNamesAndTypes( ArgNames.push_back(Var->getName()); continue; } - if (const auto *FCall = dyn_cast<FunctionDecl>(ArgExpr->getDecl())) { - if (FCall->getNameInfo().getName().isIdentifier()) { - ArgTypes.push_back(FCall->getType()); - ArgNames.push_back(FCall->getName()); - continue; - } + if (const auto *FCall = dyn_cast<FunctionDecl>(ArgExpr->getDecl()); + FCall && FCall->getNameInfo().getName().isIdentifier()) { + ArgTypes.push_back(FCall->getType()); + ArgNames.push_back(FCall->getName()); + continue; } } diff --git a/clang-tools-extra/clang-tidy/utils/ASTUtils.cpp b/clang-tools-extra/clang-tidy/utils/ASTUtils.cpp index 4baef7539008a..f73cc270678c9 100644 --- a/clang-tools-extra/clang-tidy/utils/ASTUtils.cpp +++ b/clang-tools-extra/clang-tidy/utils/ASTUtils.cpp @@ -49,12 +49,12 @@ bool exprHasBitFlagWithSpelling(const Expr *Flags, const SourceManager &SM, return MacroName == FlagName; } // If it's a binary OR operation. - if (const auto *BO = dyn_cast<BinaryOperator>(Flags)) - if (BO->getOpcode() == BinaryOperatorKind::BO_Or) - return exprHasBitFlagWithSpelling(BO->getLHS()->IgnoreParenCasts(), SM, - LangOpts, FlagName) || - exprHasBitFlagWithSpelling(BO->getRHS()->IgnoreParenCasts(), SM, - LangOpts, FlagName); + if (const auto *BO = dyn_cast<BinaryOperator>(Flags); + BO && BO->getOpcode() == BinaryOperatorKind::BO_Or) + return exprHasBitFlagWithSpelling(BO->getLHS()->IgnoreParenCasts(), SM, + LangOpts, FlagName) || + exprHasBitFlagWithSpelling(BO->getRHS()->IgnoreParenCasts(), SM, + LangOpts, FlagName); // Otherwise, assume it has the flag. return true; @@ -97,13 +97,12 @@ bool areStatementsIdentical(const Stmt *FirstStmt, const Stmt *SecondStmt, if (FirstStmt->getStmtClass() != SecondStmt->getStmtClass()) return false; - if (isa<Expr>(FirstStmt) && isa<Expr>(SecondStmt)) { + if (isa<Expr>(FirstStmt) && isa<Expr>(SecondStmt) && + (cast<Expr>(FirstStmt)->containsErrors() || + cast<Expr>(SecondStmt)->containsErrors())) // If we have errors in expressions, we will be unable // to accurately profile and compute hashes for each statements. - if (cast<Expr>(FirstStmt)->containsErrors() || - cast<Expr>(SecondStmt)->containsErrors()) - return false; - } + return false; llvm::FoldingSetNodeID DataFirst, DataSecond; FirstStmt->Profile(DataFirst, Context, Canonical); diff --git a/clang-tools-extra/clang-tidy/utils/Aliasing.cpp b/clang-tools-extra/clang-tidy/utils/Aliasing.cpp index 8b64cfe2c9224..848a8ce1f803d 100644 --- a/clang-tools-extra/clang-tidy/utils/Aliasing.cpp +++ b/clang-tools-extra/clang-tidy/utils/Aliasing.cpp @@ -35,12 +35,11 @@ static bool isPtrOrReferenceForVar(const Stmt *S, const ValueDecl *Var) { return true; if (const auto *DS = dyn_cast<DeclStmt>(S)) { - for (const Decl *D : DS->getDeclGroup()) { - if (const auto *LeftVar = dyn_cast<VarDecl>(D)) { - if (LeftVar->hasInit() && LeftVar->getType()->isReferenceType()) - return isAccessForVar(LeftVar->getInit(), Var); - } - } + for (const Decl *D : DS->getDeclGroup()) + if (const auto *LeftVar = dyn_cast<VarDecl>(D); + LeftVar && LeftVar->hasInit() && + LeftVar->getType()->isReferenceType()) + return isAccessForVar(LeftVar->getInit(), Var); } else if (const auto *UnOp = dyn_cast<UnaryOperator>(S)) { if (UnOp->getOpcode() == UO_AddrOf) return isAccessForVar(UnOp->getSubExpr(), Var); diff --git a/clang-tools-extra/clang-tidy/utils/ExceptionAnalyzer.cpp b/clang-tools-extra/clang-tidy/utils/ExceptionAnalyzer.cpp index 13781ada37557..7decd18dd25b9 100644 --- a/clang-tools-extra/clang-tidy/utils/ExceptionAnalyzer.cpp +++ b/clang-tools-extra/clang-tidy/utils/ExceptionAnalyzer.cpp @@ -135,15 +135,14 @@ static bool isStandardPointerConvertible(QualType From, QualType To) { // be converted to a prvalue of type “pointer to cv B”, where B is a base // class of D. If B is an inaccessible or ambiguous base class of D, a program // that necessitates this conversion is ill-formed. - if (const auto *RD = From->getPointeeCXXRecordDecl()) { - if (RD->isCompleteDefinition() && - isBaseOf(From->getPointeeType().getTypePtr(), - To->getPointeeType().getTypePtr())) { - // If B is an inaccessible or ambiguous base class of D, a program - // that necessitates this conversion is ill-formed - return isUnambiguousPublicBaseClass(From->getPointeeType().getTypePtr(), - To->getPointeeType().getTypePtr()); - } + if (const auto *RD = From->getPointeeCXXRecordDecl(); + RD && RD->isCompleteDefinition() && + isBaseOf(From->getPointeeType().getTypePtr(), + To->getPointeeType().getTypePtr())) { + // If B is an inaccessible or ambiguous base class of D, a program + // that necessitates this conversion is ill-formed + return isUnambiguousPublicBaseClass(From->getPointeeType().getTypePtr(), + To->getPointeeType().getTypePtr()); } return false; @@ -255,10 +254,8 @@ static bool isQualificationConvertiblePointer(QualType From, QualType To, bool ConstUntilI = true; const auto SatisfiesCVRules = [&I, &ConstUntilI](const QualType &From, const QualType &To) { - if (I > 1) { - if (From.getQualifiers() != To.getQualifiers() && !ConstUntilI) - return false; - } + if (I > 1 && From.getQualifiers() != To.getQualifiers() && !ConstUntilI) + return false; if (I > 0) { if (From.isConstQualified() && !To.isConstQualified()) @@ -439,14 +436,12 @@ ExceptionAnalyzer::ExceptionInfo::filterIgnoredExceptions( const Type *T = ThrownException.getFirst(); if (!T) continue; - if (const auto *TD = T->getAsTagDecl()) { - if (TD->getDeclName().isIdentifier()) { - if ((IgnoreBadAlloc && - (TD->getName() == "bad_alloc" && TD->isInStdNamespace())) || - IgnoredTypes.contains(TD->getName())) - TypesToDelete.push_back(T); - } - } + if (const auto *TD = T->getAsTagDecl(); + TD && TD->getDeclName().isIdentifier() && + ((IgnoreBadAlloc && + (TD->getName() == "bad_alloc" && TD->isInStdNamespace())) || + IgnoredTypes.contains(TD->getName()))) + TypesToDelete.push_back(T); } for (const Type *T : TypesToDelete) ThrownExceptions.erase(T); diff --git a/clang-tools-extra/clang-tidy/utils/ExprSequence.cpp b/clang-tools-extra/clang-tidy/utils/ExprSequence.cpp index e75782ed6795a..dd98147441d31 100644 --- a/clang-tools-extra/clang-tidy/utils/ExprSequence.cpp +++ b/clang-tools-extra/clang-tidy/utils/ExprSequence.cpp @@ -235,12 +235,13 @@ const Stmt *ExprSequence::getSequenceSuccessor(const Stmt *S) const { } if (S == TheSwitchStmt->getConditionVariableDeclStmt()) return TheSwitchStmt->getCond(); - } else if (const auto *TheWhileStmt = dyn_cast<WhileStmt>(Parent)) { + } else if (const auto *TheWhileStmt = dyn_cast<WhileStmt>(Parent); + TheWhileStmt && + S == TheWhileStmt->getConditionVariableDeclStmt()) { // While statement: Sequence variable declaration (along with the // expression used to initialize it) before the evaluation of the // condition. - if (S == TheWhileStmt->getConditionVariableDeclStmt()) - return TheWhileStmt->getCond(); + return TheWhileStmt->getCond(); } } diff --git a/clang-tools-extra/clang-tidy/utils/FixItHintUtils.cpp b/clang-tools-extra/clang-tidy/utils/FixItHintUtils.cpp index e013742fe6901..e774ce67c4f56 100644 --- a/clang-tools-extra/clang-tidy/utils/FixItHintUtils.cpp +++ b/clang-tools-extra/clang-tidy/utils/FixItHintUtils.cpp @@ -280,13 +280,13 @@ static bool needParensAfterUnaryOperator(const Expr &ExprNode) { // Format a pointer to an expression: prefix with '*' but simplify // when it already begins with '&'. Return empty string on failure. std::string formatDereference(const Expr &ExprNode, const ASTContext &Context) { - if (const auto *Op = dyn_cast<UnaryOperator>(&ExprNode)) { - if (Op->getOpcode() == UO_AddrOf) { - // Strip leading '&'. - return std::string( - tooling::fixit::getText(*Op->getSubExpr()->IgnoreParens(), Context)); - } + if (const auto *Op = dyn_cast<UnaryOperator>(&ExprNode); + Op && Op->getOpcode() == UO_AddrOf) { + // Strip leading '&'. + return std::string( + tooling::fixit::getText(*Op->getSubExpr()->IgnoreParens(), Context)); } + StringRef Text = tooling::fixit::getText(ExprNode, Context); if (Text.empty()) diff --git a/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp b/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp index f87a393f071f3..b7c313693781d 100644 --- a/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp +++ b/clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp @@ -82,18 +82,16 @@ determineIncludeKind(StringRef CanonicalFile, StringRef IncludeFile, CanonicalInclude.split("/public/"); StringRef FileCopy = CanonicalFile; if (FileCopy.consume_front(Parts.first) && - FileCopy.consume_back(Parts.second)) { - // Determine the kind of this inclusion. - if (FileCopy == "/internal/" || FileCopy == "/proto/") - return IncludeSorter::IK_MainTUInclude; - } + FileCopy.consume_back(Parts.second) && + // Determine the kind of this inclusion. + (FileCopy == "/internal/" || FileCopy == "/proto/")) + return IncludeSorter::IK_MainTUInclude; } - if (Style == IncludeSorter::IS_Google_ObjC) { - if (IncludeFile.ends_with(".generated.h") || - IncludeFile.ends_with(".proto.h") || - IncludeFile.ends_with(".pbobjc.h")) { - return IncludeSorter::IK_GeneratedInclude; - } + if (Style == IncludeSorter::IS_Google_ObjC && + (IncludeFile.ends_with(".generated.h") || + IncludeFile.ends_with(".proto.h") || + IncludeFile.ends_with(".pbobjc.h"))) { + return IncludeSorter::IK_GeneratedInclude; } return IncludeSorter::IK_NonSystemInclude; } diff --git a/clang-tools-extra/clang-tidy/utils/NamespaceAliaser.cpp b/clang-tools-extra/clang-tidy/utils/NamespaceAliaser.cpp index 8aa47e452cc61..8bee629614346 100644 --- a/clang-tools-extra/clang-tidy/utils/NamespaceAliaser.cpp +++ b/clang-tools-extra/clang-tidy/utils/NamespaceAliaser.cpp @@ -83,10 +83,10 @@ std::string NamespaceAliaser::getNamespaceName(ASTContext &Context, StringRef Namespace) const { const auto *Function = getSurroundingFunction(Context, Statement); const auto FunctionAliases = AddedAliases.find(Function); - if (FunctionAliases != AddedAliases.end()) { - if (FunctionAliases->second.contains(Namespace)) - return FunctionAliases->second.find(Namespace)->getValue(); - } + if (FunctionAliases != AddedAliases.end() && + FunctionAliases->second.contains(Namespace)) + return FunctionAliases->second.find(Namespace)->getValue(); + return Namespace.str(); } diff --git a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp index d0a6e9af4fab6..943c21a14c6d9 100644 --- a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp +++ b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp @@ -69,12 +69,10 @@ class NameLookup { static const NamedDecl *findDecl(const RecordDecl &RecDecl, StringRef DeclName) { - for (const Decl *D : RecDecl.decls()) { - if (const auto *ND = dyn_cast<NamedDecl>(D)) { - if (ND->getDeclName().isIdentifier() && ND->getName() == DeclName) - return ND; - } - } + for (const Decl *D : RecDecl.decls()) + if (const auto *ND = dyn_cast<NamedDecl>(D); + ND && ND->getDeclName().isIdentifier() && ND->getName() == DeclName) + return ND; return nullptr; } _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
