Index: test/clang-tidy/readability-container-size-empty.cpp =================================================================== --- /dev/null +++ test/clang-tidy/readability-container-size-empty.cpp @@ -0,0 +1,106 @@ +// RUN: $(dirname %s)/check_clang_tidy.sh %s readability-container-size-empty %t +// REQUIRES: shell + +namespace std { +template struct vector { + vector() {} + int size() const {} + bool empty() const {} +}; +} + +int main() { + std::vector vect; + if (vect.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 (vect.empty()){{$}} + if (vect.size() != 0) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} + if (0 == vect.size()) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (vect.empty()){{$}} + if (0 != vect.size()) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} + if (vect.size() > 0) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} + if (0 < vect.size()) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:11: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} + if (vect.size() < 1) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (vect.empty()){{$}} + if (1 > vect.size()) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:11: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (vect.empty()){{$}} + if (vect.size() >= 1) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} + if (1 <= vect.size()) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} + if (!vect.size()) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:8: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (vect.empty()){{$}} + if (vect.size()) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} + + if (vect.empty()) + ; + + const std::vector vect2; + if (vect2.size() != 0) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (!vect2.empty()){{$}} + + std::vector *vect3 = new std::vector(); + if (vect3->size() == 0) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (vect3->empty()){{$}} + + delete vect3; + + const std::vector &vect4 = vect2; + if (vect4.size() == 0) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (vect4.empty()){{$}} +} + +#define CHECKSIZE(x) if (x.size()) +// CHECK-FIXES: #define CHECKSIZE(x) if (x.size()) + +template void f() { + std::vector v; + if (v.size()) + ; + // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used + // CHECK-FIXES: {{^ }}if (!v.empty()){{$}} + // CHECK-FIXES-NEXT: ; + CHECKSIZE(v); + // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: The 'empty' method should be used + // CHECK-MESSAGES: CHECKSIZE(v); +} + +void g() { + f(); + f(); + f(); +} Index: test/clang-tidy/readibility-container-size-empty.cpp =================================================================== --- test/clang-tidy/readibility-container-size-empty.cpp +++ /dev/null @@ -1,106 +0,0 @@ -// RUN: $(dirname %s)/check_clang_tidy.sh %s readability-container-size-empty %t -// REQUIRES: shell - -namespace std { -template struct vector { - vector() {} - int size() const {} - bool empty() const {} -}; -} - -int main() { - std::vector vect; - if (vect.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 (vect.empty()){{$}} - if (vect.size() != 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} - if (0 == vect.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect.empty()){{$}} - if (0 != vect.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} - if (vect.size() > 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} - if (0 < vect.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:11: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} - if (vect.size() < 1) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect.empty()){{$}} - if (1 > vect.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:11: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect.empty()){{$}} - if (vect.size() >= 1) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} - if (1 <= vect.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} - if (!vect.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:8: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect.empty()){{$}} - if (vect.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!vect.empty()){{$}} - - if (vect.empty()) - ; - - const std::vector vect2; - if (vect2.size() != 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!vect2.empty()){{$}} - - std::vector *vect3 = new std::vector(); - if (vect3->size() == 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect3->empty()){{$}} - - delete vect3; - - const std::vector &vect4 = vect2; - if (vect4.size() == 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect4.empty()){{$}} -} - -#define CHECKSIZE(x) if (x.size()) -// CHECK-FIXES: #define CHECKSIZE(x) if (x.size()) - -template void f() { - std::vector v; - if (v.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: The 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!v.empty()){{$}} - // CHECK-FIXES-NEXT: ; - CHECKSIZE(v); - // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: The 'empty' method should be used - // CHECK-MESSAGES: CHECKSIZE(v); -} - -void g() { - f(); - f(); - f(); -}