[clang-tools-extra] 14c7632 - [clang-tidy][readability-container-contains] Use hasOperands when possible (#109178)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 19 11:04:55 PDT 2024
Author: Nicolas van Kempen
Date: 2024-09-19T14:04:51-04:00
New Revision: 14c76321a27943455dfa041e5e84121c61c8162d
URL: https://github.com/llvm/llvm-project/commit/14c76321a27943455dfa041e5e84121c61c8162d
DIFF: https://github.com/llvm/llvm-project/commit/14c76321a27943455dfa041e5e84121c61c8162d.diff
LOG: [clang-tidy][readability-container-contains] Use hasOperands when possible (#109178)
Simplifies two cases and matches two new cases previously missing,
`container.end() [!=]= container.find(...)`.
Added:
Modified:
clang-tools-extra/clang-tidy/readability/ContainerContainsCheck.cpp
clang-tools-extra/test/clang-tidy/checkers/readability/container-contains.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-tidy/readability/ContainerContainsCheck.cpp b/clang-tools-extra/clang-tidy/readability/ContainerContainsCheck.cpp
index 698231d777d2d4..05d4c87bc73cef 100644
--- a/clang-tools-extra/clang-tidy/readability/ContainerContainsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/ContainerContainsCheck.cpp
@@ -62,10 +62,7 @@ void ContainerContainsCheck::registerMatchers(MatchFinder *Finder) {
.bind("positiveComparison"),
this);
AddSimpleMatcher(
- binaryOperator(hasLHS(CountCall), hasOperatorName("!="), hasRHS(Literal0))
- .bind("positiveComparison"));
- AddSimpleMatcher(
- binaryOperator(hasLHS(Literal0), hasOperatorName("!="), hasRHS(CountCall))
+ binaryOperator(hasOperatorName("!="), hasOperands(CountCall, Literal0))
.bind("positiveComparison"));
AddSimpleMatcher(
binaryOperator(hasLHS(CountCall), hasOperatorName(">"), hasRHS(Literal0))
@@ -82,10 +79,7 @@ void ContainerContainsCheck::registerMatchers(MatchFinder *Finder) {
// Find inverted membership tests which use `count()`.
AddSimpleMatcher(
- binaryOperator(hasLHS(CountCall), hasOperatorName("=="), hasRHS(Literal0))
- .bind("negativeComparison"));
- AddSimpleMatcher(
- binaryOperator(hasLHS(Literal0), hasOperatorName("=="), hasRHS(CountCall))
+ binaryOperator(hasOperatorName("=="), hasOperands(CountCall, Literal0))
.bind("negativeComparison"));
AddSimpleMatcher(
binaryOperator(hasLHS(CountCall), hasOperatorName("<="), hasRHS(Literal0))
@@ -102,10 +96,10 @@ void ContainerContainsCheck::registerMatchers(MatchFinder *Finder) {
// Find membership tests based on `find() == end()`.
AddSimpleMatcher(
- binaryOperator(hasLHS(FindCall), hasOperatorName("!="), hasRHS(EndCall))
+ binaryOperator(hasOperatorName("!="), hasOperands(FindCall, EndCall))
.bind("positiveComparison"));
AddSimpleMatcher(
- binaryOperator(hasLHS(FindCall), hasOperatorName("=="), hasRHS(EndCall))
+ binaryOperator(hasOperatorName("=="), hasOperands(FindCall, EndCall))
.bind("negativeComparison"));
}
diff --git a/clang-tools-extra/test/clang-tidy/checkers/readability/container-contains.cpp b/clang-tools-extra/test/clang-tidy/checkers/readability/container-contains.cpp
index 906515b075d4de..9a9b233e07229b 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/readability/container-contains.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/readability/container-contains.cpp
@@ -426,3 +426,30 @@ void testBox() {
// CHECK-MESSAGES: :[[@LINE-1]]:{{[0-9]+}}: warning: use 'contains' to check for membership [readability-container-contains]
// CHECK-FIXES: if (Set.contains(0)) {};
}
+
+void testOperandPermutations(std::map<int, int>& Map) {
+ if (Map.count(0) != 0) {};
+ // CHECK-MESSAGES: :[[@LINE-1]]:{{[0-9]+}}: warning: use 'contains' to check for membership [readability-container-contains]
+ // CHECK-FIXES: if (Map.contains(0)) {};
+ if (0 != Map.count(0)) {};
+ // CHECK-MESSAGES: :[[@LINE-1]]:{{[0-9]+}}: warning: use 'contains' to check for membership [readability-container-contains]
+ // CHECK-FIXES: if (Map.contains(0)) {};
+ if (Map.count(0) == 0) {};
+ // CHECK-MESSAGES: :[[@LINE-1]]:{{[0-9]+}}: warning: use 'contains' to check for membership [readability-container-contains]
+ // CHECK-FIXES: if (!Map.contains(0)) {};
+ if (0 == Map.count(0)) {};
+ // CHECK-MESSAGES: :[[@LINE-1]]:{{[0-9]+}}: warning: use 'contains' to check for membership [readability-container-contains]
+ // CHECK-FIXES: if (!Map.contains(0)) {};
+ if (Map.find(0) != Map.end()) {};
+ // CHECK-MESSAGES: :[[@LINE-1]]:{{[0-9]+}}: warning: use 'contains' to check for membership [readability-container-contains]
+ // CHECK-FIXES: if (Map.contains(0)) {};
+ if (Map.end() != Map.find(0)) {};
+ // CHECK-MESSAGES: :[[@LINE-1]]:{{[0-9]+}}: warning: use 'contains' to check for membership [readability-container-contains]
+ // CHECK-FIXES: if (Map.contains(0)) {};
+ if (Map.find(0) == Map.end()) {};
+ // CHECK-MESSAGES: :[[@LINE-1]]:{{[0-9]+}}: warning: use 'contains' to check for membership [readability-container-contains]
+ // CHECK-FIXES: if (!Map.contains(0)) {};
+ if (Map.end() == Map.find(0)) {};
+ // CHECK-MESSAGES: :[[@LINE-1]]:{{[0-9]+}}: warning: use 'contains' to check for membership [readability-container-contains]
+ // CHECK-FIXES: if (!Map.contains(0)) {};
+}
More information about the cfe-commits
mailing list