1 | // RUN: %check_clang_tidy %s modernize-replace-random-shuffle %t |
2 | |
3 | //CHECK-FIXES: #include <random> |
4 | |
5 | namespace std { |
6 | template <typename T> struct vec_iterator { |
7 | T *ptr; |
8 | vec_iterator operator++(int); |
9 | }; |
10 | |
11 | template <typename T> struct vector { |
12 | typedef vec_iterator<T> iterator; |
13 | |
14 | iterator begin(); |
15 | iterator end(); |
16 | }; |
17 | |
18 | template <typename FwIt> |
19 | void random_shuffle(FwIt begin, FwIt end); |
20 | |
21 | template <typename FwIt, typename randomFunc> |
22 | void random_shuffle(FwIt begin, FwIt end, randomFunc& randomfunc); |
23 | |
24 | template <typename FwIt> |
25 | void shuffle(FwIt begin, FwIt end); |
26 | } // namespace std |
27 | |
28 | // Random Func |
29 | int myrandom (int i) { return i;} |
30 | |
31 | using namespace std; |
32 | |
33 | int main() { |
34 | std::vector<int> vec; |
35 | |
36 | std::random_shuffle(begin: vec.begin(), end: vec.end()); |
37 | // CHECK-MESSAGES: [[@LINE-1]]:3: warning: 'std::random_shuffle' has been removed in C++17; use 'std::shuffle' instead |
38 | // CHECK-FIXES: std::shuffle(vec.begin(), vec.end(), std::mt19937(std::random_device()())); |
39 | |
40 | std::shuffle(begin: vec.begin(), end: vec.end()); |
41 | |
42 | random_shuffle(begin: vec.begin(), end: vec.end()); |
43 | // CHECK-MESSAGES: [[@LINE-1]]:3: warning: 'std::random_shuffle' has been removed in C++17; use 'std::shuffle' instead |
44 | // CHECK-FIXES: shuffle(vec.begin(), vec.end(), std::mt19937(std::random_device()())); |
45 | |
46 | std::random_shuffle(begin: vec.begin(), end: vec.end(), randomfunc&: myrandom); |
47 | // CHECK-MESSAGES: [[@LINE-1]]:3: warning: 'std::random_shuffle' has been removed in C++17; use 'std::shuffle' and an alternative random mechanism instead |
48 | // CHECK-FIXES: std::shuffle(vec.begin(), vec.end(), std::mt19937(std::random_device()())); |
49 | |
50 | random_shuffle(begin: vec.begin(), end: vec.end(), randomfunc&: myrandom); |
51 | // CHECK-MESSAGES: [[@LINE-1]]:3: warning: 'std::random_shuffle' has been removed in C++17; use 'std::shuffle' and an alternative random mechanism instead |
52 | // CHECK-FIXES: shuffle(vec.begin(), vec.end(), std::mt19937(std::random_device()())); |
53 | |
54 | shuffle(begin: vec.begin(), end: vec.end()); |
55 | |
56 | return 0; |
57 | } |
58 | |