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/performance-inefficient-algorithm.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/performance-inefficient-algorithm.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/performance-inefficient-algorithm.cpp | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/clang-tools-extra/test/clang-tidy/performance-inefficient-algorithm.cpp b/clang-tools-extra/test/clang-tidy/performance-inefficient-algorithm.cpp deleted file mode 100644 index aa4e30d6f3f..00000000000 --- a/clang-tools-extra/test/clang-tidy/performance-inefficient-algorithm.cpp +++ /dev/null @@ -1,167 +0,0 @@ -// RUN: %check_clang_tidy -std=c++11,c++14 %s performance-inefficient-algorithm %t -// FIXME: Fix the checker to work in C++17 mode. - -namespace std { -template <typename T> struct less { - bool operator()(const T &lhs, const T &rhs) { return lhs < rhs; } -}; - -template <typename T> struct greater { - bool operator()(const T &lhs, const T &rhs) { return lhs > rhs; } -}; - -struct iterator_type {}; - -template <typename K, typename Cmp = less<K>> struct set { - typedef iterator_type iterator; - iterator find(const K &k); - unsigned count(const K &k); - - iterator begin(); - iterator end(); - iterator begin() const; - iterator end() const; -}; - -struct other_iterator_type {}; - -template <typename K, typename V, typename Cmp = less<K>> struct map { - typedef other_iterator_type iterator; - iterator find(const K &k); - unsigned count(const K &k); - - iterator begin(); - iterator end(); - iterator begin() const; - iterator end() const; -}; - -template <typename K, typename V> struct multimap : map<K, V> {}; -template <typename K> struct unordered_set : set<K> {}; -template <typename K, typename V> struct unordered_map : map<K, V> {}; -template <typename K> struct unordered_multiset : set<K> {}; -template <typename K, typename V> struct unordered_multimap : map<K, V> {}; - -template <typename K, typename Cmp = less<K>> struct multiset : set<K, Cmp> {}; - -template <typename FwIt, typename K> -FwIt find(FwIt, FwIt end, const K &) { return end; } - -template <typename FwIt, typename K, typename Cmp> -FwIt find(FwIt, FwIt end, const K &, Cmp) { return end; } - -template <typename FwIt, typename Pred> -FwIt find_if(FwIt, FwIt end, Pred) { return end; } - -template <typename FwIt, typename K> -unsigned count(FwIt, FwIt, const K &) { return 0; } - -template <typename FwIt, typename K> -FwIt lower_bound(FwIt, FwIt end, const K &) { return end; } - -template <typename FwIt, typename K, typename Ord> -FwIt lower_bound(FwIt, FwIt end, const K &, Ord) { return end; } -} - -#define FIND_IN_SET(x) find(x.begin(), x.end(), 10) -// CHECK-FIXES: #define FIND_IN_SET(x) find(x.begin(), x.end(), 10) - -template <typename T> void f(const T &t) { - std::set<int> s; - find(s.begin(), s.end(), 46); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}s.find(46);{{$}} - - find(t.begin(), t.end(), 46); - // CHECK-FIXES: {{^ }}find(t.begin(), t.end(), 46);{{$}} -} - -int main() { - std::set<int> s; - auto it = std::find(s.begin(), s.end(), 43); - // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: this STL algorithm call should be replaced with a container method [performance-inefficient-algorithm] - // CHECK-FIXES: {{^ }}auto it = s.find(43);{{$}} - auto c = count(s.begin(), s.end(), 43); - // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}auto c = s.count(43);{{$}} - -#define SECOND(x, y, z) y - SECOND(q,std::count(s.begin(), s.end(), 22),w); - // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}SECOND(q,s.count(22),w);{{$}} - - it = find_if(s.begin(), s.end(), [](int) { return false; }); - - std::multiset<int> ms; - find(ms.begin(), ms.end(), 46); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}ms.find(46);{{$}} - - const std::multiset<int> &msref = ms; - find(msref.begin(), msref.end(), 46); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}msref.find(46);{{$}} - - std::multiset<int> *msptr = &ms; - find(msptr->begin(), msptr->end(), 46); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}msptr->find(46);{{$}} - - it = std::find(s.begin(), s.end(), 43, std::greater<int>()); - // CHECK-MESSAGES: :[[@LINE-1]]:42: warning: different comparers used in the algorithm and the container [performance-inefficient-algorithm] - - FIND_IN_SET(s); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}FIND_IN_SET(s);{{$}} - - f(s); - - std::unordered_set<int> us; - lower_bound(us.begin(), us.end(), 10); - // CHECK-FIXES: {{^ }}lower_bound(us.begin(), us.end(), 10);{{$}} - find(us.begin(), us.end(), 10); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}us.find(10);{{$}} - - std::unordered_multiset<int> ums; - find(ums.begin(), ums.end(), 10); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}ums.find(10);{{$}} - - std::map<int, int> intmap; - find(intmap.begin(), intmap.end(), 46); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}find(intmap.begin(), intmap.end(), 46);{{$}} - - std::multimap<int, int> intmmap; - find(intmmap.begin(), intmmap.end(), 46); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}find(intmmap.begin(), intmmap.end(), 46);{{$}} - - std::unordered_map<int, int> umap; - find(umap.begin(), umap.end(), 46); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}find(umap.begin(), umap.end(), 46);{{$}} - - std::unordered_multimap<int, int> ummap; - find(ummap.begin(), ummap.end(), 46); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}find(ummap.begin(), ummap.end(), 46);{{$}} -} - -struct Value { - int value; -}; - -struct Ordering { - bool operator()(const Value &lhs, const Value &rhs) const { - return lhs.value < rhs.value; - } - bool operator()(int lhs, const Value &rhs) const { return lhs < rhs.value; } -}; - -void g(std::set<Value, Ordering> container, int value) { - lower_bound(container.begin(), container.end(), value, Ordering()); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: this STL algorithm call should be - // CHECK-FIXES: {{^ }}lower_bound(container.begin(), container.end(), value, Ordering());{{$}} -} |