[PATCH] D19262: [clang-tidy] readability-container-size-empty fixes
Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 19 06:34:41 PDT 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL266734: [clang-tidy] readability-container-size-empty fixes (authored by xazax).
Changed prior to commit:
http://reviews.llvm.org/D19262?vs=54182&id=54187#toc
Repository:
rL LLVM
http://reviews.llvm.org/D19262
Files:
clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
clang-tools-extra/trunk/test/clang-tidy/readability-container-size-empty.cpp
Index: clang-tools-extra/trunk/test/clang-tidy/readability-container-size-empty.cpp
===================================================================
--- clang-tools-extra/trunk/test/clang-tidy/readability-container-size-empty.cpp
+++ clang-tools-extra/trunk/test/clang-tidy/readability-container-size-empty.cpp
@@ -7,6 +7,15 @@
bool empty() const;
};
+template <typename T> struct basic_string {
+ basic_string();
+ unsigned long size() const;
+ bool empty() const;
+};
+
+typedef basic_string<char> string;
+typedef basic_string<wchar_t> wstring;
+
inline namespace __v2 {
template <typename T> struct set {
set();
@@ -20,10 +29,24 @@
int main() {
std::set<int> intSet;
+ std::string str;
+ std::wstring wstr;
+ str.size() + 0;
+ str.size() - 0;
+ 0 + str.size();
+ 0 - str.size();
if (intSet.size() == 0)
;
// CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used to check for emptiness instead of 'size' [readability-container-size-empty]
// CHECK-FIXES: {{^ }}if (intSet.empty()){{$}}
+ if (str.size() == 0)
+ ;
+ // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used
+ // CHECK-FIXES: {{^ }}if (str.empty()){{$}}
+ if (wstr.size() == 0)
+ ;
+ // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used
+ // CHECK-FIXES: {{^ }}if (wstr.empty()){{$}}
std::vector<int> vect;
if (vect.size() == 0)
;
Index: clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
===================================================================
--- clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
+++ clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
@@ -16,6 +16,7 @@
static bool isContainerName(llvm::StringRef ClassName) {
static const char *const ContainerNames[] = {"array",
+ "basic_string",
"deque",
"forward_list",
"list",
@@ -59,14 +60,13 @@
return;
const auto WrongUse = anyOf(
- hasParent(
- binaryOperator(
- anyOf(has(integerLiteral(equals(0))),
- allOf(anyOf(hasOperatorName("<"), hasOperatorName(">="),
- hasOperatorName(">"), hasOperatorName("<=")),
- hasEitherOperand(
- ignoringImpCasts(integerLiteral(equals(1)))))))
- .bind("SizeBinaryOp")),
+ hasParent(binaryOperator(
+ anyOf(hasOperatorName("<"), hasOperatorName(">="),
+ hasOperatorName(">"), hasOperatorName("<="),
+ hasOperatorName("=="), hasOperatorName("!=")),
+ hasEitherOperand(ignoringImpCasts(anyOf(
+ integerLiteral(equals(1)), integerLiteral(equals(0))))))
+ .bind("SizeBinaryOp")),
hasParent(implicitCastExpr(
hasImplicitDestinationType(booleanType()),
anyOf(
@@ -122,6 +122,10 @@
if (Value > 1)
return;
+ if (Value == 1 && (OpCode == BinaryOperatorKind::BO_EQ ||
+ OpCode == BinaryOperatorKind::BO_NE))
+ return;
+
// Always true, no warnings for that.
if ((OpCode == BinaryOperatorKind::BO_GE && Value == 0 && ContainerIsLHS) ||
(OpCode == BinaryOperatorKind::BO_LE && Value == 0 && !ContainerIsLHS))
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19262.54187.patch
Type: text/x-patch
Size: 3556 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160419/cb532a01/attachment.bin>
More information about the cfe-commits
mailing list