llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-tidy Author: Baranov Victor (vbvictor) <details> <summary>Changes</summary> --- Patch is 30.75 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/214693.diff 19 Files Affected: - (modified) clang-tools-extra/clang-tidy/performance/MoveConstArgCheck.cpp (+4-5) - (modified) clang-tools-extra/clang-tidy/performance/UseStdMoveCheck.cpp (+2-4) - (modified) clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp (+6-7) - (modified) clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp (+6-6) - (modified) clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp (+4-3) - (modified) clang-tools-extra/clang-tidy/readability/MakeMemberFunctionConstCheck.cpp (+6-7) - (modified) clang-tools-extra/clang-tidy/readability/NamedParameterCheck.cpp (+4-3) - (modified) clang-tools-extra/clang-tidy/readability/NonConstParameterCheck.cpp (+3-4) - (modified) clang-tools-extra/clang-tidy/readability/RedundantStringInitCheck.cpp (+11-11) - (modified) clang-tools-extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp (+51-56) - (modified) clang-tools-extra/clang-tidy/readability/SuspiciousCallArgumentCheck.cpp (+5-6) - (modified) clang-tools-extra/clang-tidy/utils/ASTUtils.cpp (+10-11) - (modified) clang-tools-extra/clang-tidy/utils/Aliasing.cpp (+5-6) - (modified) clang-tools-extra/clang-tidy/utils/ExceptionAnalyzer.cpp (+16-21) - (modified) clang-tools-extra/clang-tidy/utils/ExprSequence.cpp (+4-3) - (modified) clang-tools-extra/clang-tidy/utils/FixItHintUtils.cpp (+6-6) - (modified) clang-tools-extra/clang-tidy/utils/IncludeSorter.cpp (+9-11) - (modified) clang-tools-extra/clang-tidy/utils/NamespaceAliaser.cpp (+4-4) - (modified) clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp (+4-6) ``````````diff 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 4cc72bb14917a..056360840969a 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) || - ... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/214693 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
