llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-tidy Author: None (Anshul200677) <details> <summary>Changes</summary> This patch fixes a false negative in "readability-simplify-boolean-expr". Previously, the check explicitly ignored 'if` statements that contained an initialization statement (example:::, `if (bool x= foo(); x==true)'). this limitation caused the check to miss redundant boolean literals in the condition. CHANGES MADE ! : -Removed the check for "hasInitStorage()" in the visitor. -Added a test case to "simplify-boolean-expr.cpp" to verify that cases with init-statements are now correctly flaggd and fixed.. this enables clean up of code pattern like: "if (bool x = func(); x == true)" ----> "if (bool x = func(); x)" --- Full diff: https://github.com/llvm/llvm-project/pull/172220.diff 2 Files Affected: - (modified) clang-tools-extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp (+2-2) - (modified) clang-tools-extra/test/clang-tidy/checkers/readability/simplify-boolean-expr.cpp (+7) ``````````diff diff --git a/clang-tools-extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp b/clang-tools-extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp index 1a9c161068030..e1cc21a46d779 100644 --- a/clang-tools-extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/SimplifyBooleanExprCheck.cpp @@ -357,9 +357,9 @@ class SimplifyBooleanExprCheck::Visitor : public RecursiveASTVisitor<Visitor> { } bool VisitIfStmt(IfStmt *If) { - // Skip any if's that have a condition var or an init statement, or are + // Skiany if's that have a condition var or an init statement, or are // "if consteval" statements. - if (If->hasInitStorage() || If->hasVarStorage() || If->isConsteval()) + if ( If->hasVarStorage() || If->isConsteval()) return true; /* * if (true) ThenStmt(); -> ThenStmt(); diff --git a/clang-tools-extra/test/clang-tidy/checkers/readability/simplify-boolean-expr.cpp b/clang-tools-extra/test/clang-tidy/checkers/readability/simplify-boolean-expr.cpp index 0b99cb89262cd..076847cbf5855 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/readability/simplify-boolean-expr.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/readability/simplify-boolean-expr.cpp @@ -1035,3 +1035,10 @@ void instantiate() { ignoreInstantiations<true>(); ignoreInstantiations<false>(); } +void if_with_init_statement() { + bool x = true; + if (bool y = x; y == true) { + // CHECK-MESSAGES: :[[@LINE-1]]:{{[0-9]+}}: warning: redundant boolean literal supplied to boolean operator [readability-simplify-boolean-expr] + // CHECK-FIXES: if (bool y = x; y) { + } +} `````````` </details> https://github.com/llvm/llvm-project/pull/172220 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
