diff options
author | Dmitri Gribenko <gribozavr@gmail.com> | 2019-10-11 12:05:42 +0000 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2019-10-11 12:05:42 +0000 |
commit | 885c559369fe3d6323898c17787bd0454065fc34 (patch) | |
tree | ba43b987e078f4c2a033acc71ad3d7f1ee385a11 /clang-tools-extra/test/clang-tidy/readability-container-size-empty.cpp | |
parent | 9f6a873268e1ad9855873d9d8007086c0d01cf4f (diff) | |
download | bcm5719-llvm-885c559369fe3d6323898c17787bd0454065fc34.tar.gz bcm5719-llvm-885c559369fe3d6323898c17787bd0454065fc34.zip |
[ClangTidy] Separate tests for infrastructure and checkers
Summary:
This change moves tests for checkers and infrastructure into separate
directories, making it easier to find infrastructure tests. Tests for
checkers are already easy to find because they are named after the
checker. Tests for infrastructure were difficult to find because they
were outnumbered by tests for checkers. Now they are in a separate
directory.
Reviewers: jfb, jdoerfert, lebedev.ri
Subscribers: srhines, nemanjai, aheejin, kbarton, christof, mgrang, arphaman, jfb, lebedev.ri, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D68807
llvm-svn: 374540
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/readability-container-size-empty.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/readability-container-size-empty.cpp | 444 |
1 files changed, 0 insertions, 444 deletions
diff --git a/clang-tools-extra/test/clang-tidy/readability-container-size-empty.cpp b/clang-tools-extra/test/clang-tidy/readability-container-size-empty.cpp deleted file mode 100644 index c67d9275bbf..00000000000 --- a/clang-tools-extra/test/clang-tidy/readability-container-size-empty.cpp +++ /dev/null @@ -1,444 +0,0 @@ -// RUN: %check_clang_tidy %s readability-container-size-empty %t - -namespace std { -template <typename T> struct vector { - vector(); - bool operator==(const vector<T>& other) const; - bool operator!=(const vector<T>& other) const; - unsigned long size() const; - bool empty() const; -}; - -template <typename T> struct basic_string { - basic_string(); - bool operator==(const basic_string<T>& other) const; - bool operator!=(const basic_string<T>& other) const; - bool operator==(const char *) const; - bool operator!=(const char *) const; - basic_string<T> operator+(const basic_string<T>& other) const; - 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(); - bool operator==(const set<T>& other) const; - bool operator!=(const set<T>& other) const; - unsigned long size() const; - bool empty() const; -}; -} - -} - -template <typename T> -class TemplatedContainer { -public: - bool operator==(const TemplatedContainer<T>& other) const; - bool operator!=(const TemplatedContainer<T>& other) const; - int size() const; - bool empty() const; -}; - -template <typename T> -class PrivateEmpty { -public: - bool operator==(const PrivateEmpty<T>& other) const; - bool operator!=(const PrivateEmpty<T>& other) const; - int size() const; -private: - bool empty() const; -}; - -struct BoolSize { - bool size() const; - bool empty() const; -}; - -struct EnumSize { - enum E { one }; - enum E size() const; - bool empty() const; -}; - -class Container { -public: - bool operator==(const Container& other) const; - int size() const; - bool empty() const; -}; - -class Derived : public Container { -}; - -class Container2 { -public: - int size() const; - bool empty() const { return size() == 0; } -}; - -class Container3 { -public: - int size() const; - bool empty() const; -}; - -bool Container3::empty() const { return this->size() == 0; } - -class Container4 { -public: - bool operator==(const Container4& rhs) const; - int size() const; - bool empty() const { return *this == Container4(); } -}; - -std::string s_func() { - return std::string(); -} - -int main() { - std::set<int> intSet; - std::string str; - std::string str2; - std::wstring wstr; - (void)(str.size() + 0); - (void)(str.size() - 0); - (void)(0 + str.size()); - (void)(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()){{$}} - // CHECK-MESSAGES: :32:8: note: method 'set'::empty() defined here - if (intSet == std::set<int>()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used to check for emptiness - // CHECK-FIXES: {{^ }}if (intSet.empty()){{$}} - // CHECK-MESSAGES: :32:8: note: method 'set'::empty() defined here - if (s_func() == "") - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (s_func().empty()){{$}} - if (str.size() == 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (str.empty()){{$}} - if ((str + str2).size() == 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if ((str + str2).empty()){{$}} - if (str == "") - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (str.empty()){{$}} - if (str + str2 == "") - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if ((str + str2).empty()){{$}} - if (wstr.size() == 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (wstr.empty()){{$}} - if (wstr == "") - ; - // 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) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect.empty()){{$}} - if (vect == std::vector<int>()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: 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 (vect != std::vector<int>()) - ; - // 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 (std::vector<int>() == vect) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect.empty()){{$}} - if (std::vector<int>() != vect) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: 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() > 1) // no warning - ; - if (1 < vect.size()) // no warning - ; - if (vect.size() <= 1) // no warning - ; - if (1 >= vect.size()) // no warning - ; - 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<int> vect2; - if (vect2.size() != 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!vect2.empty()){{$}} - - std::vector<int> *vect3 = new std::vector<int>(); - if (vect3->size() == 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect3->empty()){{$}} - if ((*vect3).size() == 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if ((*vect3).empty()){{$}} - if ((*vect3) == std::vector<int>()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect3->empty()){{$}} - if (*vect3 == std::vector<int>()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect3->empty()){{$}} - - delete vect3; - - const std::vector<int> &vect4 = vect2; - if (vect4.size() == 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect4.empty()){{$}} - if (vect4 == std::vector<int>()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (vect4.empty()){{$}} - - TemplatedContainer<void> templated_container; - if (templated_container.size() == 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (templated_container.empty()){{$}} - if (templated_container == TemplatedContainer<void>()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (templated_container.empty()){{$}} - if (templated_container.size() != 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!templated_container.empty()){{$}} - if (templated_container != TemplatedContainer<void>()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!templated_container.empty()){{$}} - if (0 == templated_container.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (templated_container.empty()){{$}} - if (TemplatedContainer<void>() == templated_container) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (templated_container.empty()){{$}} - if (0 != templated_container.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!templated_container.empty()){{$}} - if (TemplatedContainer<void>() != templated_container) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!templated_container.empty()){{$}} - if (templated_container.size() > 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!templated_container.empty()){{$}} - if (0 < templated_container.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:11: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!templated_container.empty()){{$}} - if (templated_container.size() < 1) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (templated_container.empty()){{$}} - if (1 > templated_container.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:11: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (templated_container.empty()){{$}} - if (templated_container.size() >= 1) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!templated_container.empty()){{$}} - if (1 <= templated_container.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!templated_container.empty()){{$}} - if (templated_container.size() > 1) // no warning - ; - if (1 < templated_container.size()) // no warning - ; - if (templated_container.size() <= 1) // no warning - ; - if (1 >= templated_container.size()) // no warning - ; - if (!templated_container.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:8: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (templated_container.empty()){{$}} - if (templated_container.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (!templated_container.empty()){{$}} - - if (templated_container.empty()) - ; - - // No warnings expected. - PrivateEmpty<void> private_empty; - if (private_empty.size() == 0) - ; - if (private_empty == PrivateEmpty<void>()) - ; - if (private_empty.size() != 0) - ; - if (private_empty != PrivateEmpty<void>()) - ; - if (0 == private_empty.size()) - ; - if (PrivateEmpty<void>() == private_empty) - ; - if (0 != private_empty.size()) - ; - if (PrivateEmpty<void>() != private_empty) - ; - if (private_empty.size() > 0) - ; - if (0 < private_empty.size()) - ; - if (private_empty.size() < 1) - ; - if (1 > private_empty.size()) - ; - if (private_empty.size() >= 1) - ; - if (1 <= private_empty.size()) - ; - if (private_empty.size() > 1) - ; - if (1 < private_empty.size()) - ; - if (private_empty.size() <= 1) - ; - if (1 >= private_empty.size()) - ; - if (!private_empty.size()) - ; - if (private_empty.size()) - ; - - // Types with weird size() return type. - BoolSize bs; - if (bs.size() == 0) - ; - EnumSize es; - if (es.size() == 0) - ; - - Derived derived; - if (derived.size() == 0) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (derived.empty()){{$}} - if (derived == Derived()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-FIXES: {{^ }}if (derived.empty()){{$}} -} - -#define CHECKSIZE(x) if (x.size()) {} -// CHECK-FIXES: #define CHECKSIZE(x) if (x.size()) {} - -template <typename T> void f() { - std::vector<T> v; - if (v.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used to check for emptiness instead of 'size' [readability-container-size-empty] - // CHECK-MESSAGES: :9:8: note: method 'vector'::empty() defined here - // CHECK-FIXES: {{^ }}if (!v.empty()){{$}} - if (v == std::vector<T>()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used to check for emptiness instead of comparing to an empty object [readability-container-size-empty] - // CHECK-FIXES: {{^ }}if (v.empty()){{$}} - // CHECK-FIXES-NEXT: ; - CHECKSIZE(v); - // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: the 'empty' method should be used - // CHECK-MESSAGES: :9:8: note: method 'vector'::empty() defined here - // CHECK-FIXES: CHECKSIZE(v); - - TemplatedContainer<T> templated_container; - if (templated_container.size()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-MESSAGES: :44:8: note: method 'TemplatedContainer'::empty() defined here - // CHECK-FIXES: {{^ }}if (!templated_container.empty()){{$}} - if (templated_container != TemplatedContainer<T>()) - ; - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should be used - // CHECK-MESSAGES: :44:8: note: method 'TemplatedContainer'::empty() defined here - // CHECK-FIXES: {{^ }}if (!templated_container.empty()){{$}} - // CHECK-FIXES-NEXT: ; - CHECKSIZE(templated_container); - // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: the 'empty' method should be used - // CHECK-MESSAGES: :44:8: note: method 'TemplatedContainer'::empty() defined here - // CHECK-FIXES: CHECKSIZE(templated_container); -} - -void g() { - f<int>(); - f<double>(); - f<char *>(); -} |