https://github.com/PiotrZSL created https://github.com/llvm/llvm-project/pull/81890
Properly ignore parentheses in bitwise operators. Closes #81515 >From 3b8defafd16cd83e86c9922d7527217a470734a3 Mon Sep 17 00:00:00 2001 From: Piotr Zegar <piotr.ze...@nokia.com> Date: Thu, 15 Feb 2024 17:53:49 +0000 Subject: [PATCH] [clang-tidy] Fix handling of parentheses in bugprone-non-zero-enum-to-bool-conversion Properly ignore parentheses in bitwise operators. Closes: #81515 --- .../clang-tidy/bugprone/NonZeroEnumToBoolConversionCheck.cpp | 2 +- clang-tools-extra/docs/ReleaseNotes.rst | 5 +++++ .../checkers/bugprone/non-zero-enum-to-bool-conversion.cpp | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/NonZeroEnumToBoolConversionCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/NonZeroEnumToBoolConversionCheck.cpp index 918b6e3824f0b1..e0323848870bd7 100644 --- a/clang-tools-extra/clang-tidy/bugprone/NonZeroEnumToBoolConversionCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/NonZeroEnumToBoolConversionCheck.cpp @@ -64,7 +64,7 @@ void NonZeroEnumToBoolConversionCheck::registerMatchers(MatchFinder *Finder) { EnumIgnoreList))) .bind("enum"))))), unless(declRefExpr(to(enumConstantDecl()))), - unless(ignoringImplicit(ExcludedOperators)))), + unless(ignoringParenImpCasts(ExcludedOperators)))), unless(hasAncestor(staticAssertDecl()))) .bind("cast"), this); diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index a1b95d2a2020fe..2b714186c57d45 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -112,6 +112,11 @@ New check aliases Changes in existing checks ^^^^^^^^^^^^^^^^^^^^^^^^^^ +- Improved :doc:`bugprone-non-zero-enum-to-bool-conversion + <clang-tidy/checks/bugprone/non-zero-enum-to-bool-conversion>` check by + eliminating false positives resulting from direct usage of bitwise operators + within parentheses. + - Improved :doc:`bugprone-suspicious-include <clang-tidy/checks/bugprone/suspicious-include>` check by replacing the local options `HeaderFileExtensions` and `ImplementationFileExtensions` by the diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/non-zero-enum-to-bool-conversion.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/non-zero-enum-to-bool-conversion.cpp index 794e7b20c8ca53..3375f69b591119 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/non-zero-enum-to-bool-conversion.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/non-zero-enum-to-bool-conversion.cpp @@ -122,6 +122,8 @@ CustomOperatorEnum operator&(CustomOperatorEnum a, CustomOperatorEnum b) { retur void testCustomOperator(CustomOperatorEnum e) { if (e & E1) {} + if ((e & E1)) {} + if (!(e & E1)) {} } } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits