blob: af2c1954bc5fefdc541845f42dee8a45a63f81a1 [file] [log] [blame]
Manuel Klimekb91bee02015-10-22 11:31:44 +00001// RUN: %check_clang_tidy %s readability-named-parameter %t
Benjamin Kramer14d42d92014-07-15 16:47:09 +00002
3void Method(char *) { /* */ }
4// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: all parameters should be named in a function
5// CHECK-FIXES: void Method(char * /*unused*/) { /* */ }
Benjamin Kramer610ba532014-08-04 09:33:58 +00006void Method2(char *) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +00007// CHECK-MESSAGES: :[[@LINE-1]]:20: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +00008// CHECK-FIXES: void Method2(char * /*unused*/) {}
9void Method3(char *, void *) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000010// CHECK-MESSAGES: :[[@LINE-1]]:20: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000011// CHECK-FIXES: void Method3(char * /*unused*/, void * /*unused*/) {}
12void Method4(char *, int /*unused*/) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000013// CHECK-MESSAGES: :[[@LINE-1]]:20: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000014// CHECK-FIXES: void Method4(char * /*unused*/, int /*unused*/) {}
15void operator delete[](void *) throw() {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000016// CHECK-MESSAGES: :[[@LINE-1]]:30: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000017// CHECK-FIXES: void operator delete[](void * /*unused*/) throw() {}
18int Method5(int) { return 0; }
Benjamin Kramer14d42d92014-07-15 16:47:09 +000019// CHECK-MESSAGES: :[[@LINE-1]]:16: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000020// CHECK-FIXES: int Method5(int /*unused*/) { return 0; }
Benjamin Kramer14d42d92014-07-15 16:47:09 +000021void Method6(void (*)(void *)) {}
22// CHECK-MESSAGES: :[[@LINE-1]]:21: warning: all parameters should be named in a function
23// CHECK-FIXES: void Method6(void (* /*unused*/)(void *)) {}
Benjamin Kramer610ba532014-08-04 09:33:58 +000024template <typename T> void Method7(T) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000025// CHECK-MESSAGES: :[[@LINE-1]]:37: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000026// CHECK-FIXES: template <typename T> void Method7(T /*unused*/) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000027
28// Don't warn in macros.
Benjamin Kramer610ba532014-08-04 09:33:58 +000029#define M void MethodM(int) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000030M
31
Benjamin Kramer610ba532014-08-04 09:33:58 +000032void operator delete(void *x) throw() {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000033void Method7(char * /*x*/) {}
Benjamin Kramer610ba532014-08-04 09:33:58 +000034void Method8(char *x) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000035typedef void (*TypeM)(int x);
36void operator delete[](void *x) throw();
37void operator delete[](void * /*x*/) throw();
38
39struct X {
Benjamin Kramer610ba532014-08-04 09:33:58 +000040 X operator++(int) {}
Benjamin Kramerfec67052014-09-01 09:11:48 +000041 X operator--(int) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000042
Benjamin Kramere59cd6e2014-08-29 08:58:35 +000043 X(X&) = delete;
44 X &operator=(X&) = default;
45
Benjamin Kramer14d42d92014-07-15 16:47:09 +000046 const int &i;
47};
48
49void (*Func1)(void *);
50void Func2(void (*func)(void *)) {}
Benjamin Kramer610ba532014-08-04 09:33:58 +000051template <void Func(void *)> void Func3() {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000052
53template <typename T>
54struct Y {
Benjamin Kramer610ba532014-08-04 09:33:58 +000055 void foo(T) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000056// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000057// CHECK-FIXES: void foo(T /*unused*/) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000058};
59
60Y<int> y;
61Y<float> z;
62
63struct Base {
64 virtual void foo(bool notThisOne);
65 virtual void foo(int argname);
66};
67
68struct Derived : public Base {
69 void foo(int);
70// CHECK-MESSAGES: :[[@LINE-1]]:15: warning: all parameters should be named in a function
71// CHECK-FIXES: void foo(int /*argname*/);
72};
Benjamin Kramer610ba532014-08-04 09:33:58 +000073
74void FDef(int);
75// CHECK-MESSAGES: :[[@LINE-1]]:14: warning: all parameters should be named in a function
76// CHECK-FIXES: void FDef(int /*n*/);
Benjamin Kramer78cd5462014-08-04 09:42:18 +000077void FDef(int n) {}
78
79void FDef2(int, int);
80// CHECK-MESSAGES: :[[@LINE-1]]:15: warning: all parameters should be named in a function
81// CHECK-FIXES: void FDef2(int /*n*/, int /*unused*/);
82void FDef2(int n, int) {}
83// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: all parameters should be named in a function
84// CHECK-FIXES: void FDef2(int n, int /*unused*/) {}
Benjamin Kramer610ba532014-08-04 09:33:58 +000085
86void FNoDef(int);
Benjamin Kramerfec67052014-09-01 09:11:48 +000087
88class Z {};
89
90Z &operator++(Z&) {}
91// CHECK-MESSAGES: :[[@LINE-1]]:17: warning: all parameters should be named in a function
92// CHECK-FIXES: Z &operator++(Z& /*unused*/) {}
93
94Z &operator++(Z&, int) {}
95// CHECK-MESSAGES: :[[@LINE-1]]:17: warning: all parameters should be named in a function
96// CHECK-FIXES: Z &operator++(Z& /*unused*/, int) {}
97
98Z &operator--(Z&) {}
99// CHECK-MESSAGES: :[[@LINE-1]]:17: warning: all parameters should be named in a function
100// CHECK-FIXES: Z &operator--(Z& /*unused*/) {}
101
102Z &operator--(Z&, int) {}
103// CHECK-MESSAGES: :[[@LINE-1]]:17: warning: all parameters should be named in a function
104// CHECK-FIXES: Z &operator--(Z& /*unused*/, int) {}
Alexander Kornienkof5a57c92014-09-25 08:16:24 +0000105
106namespace testing {
107namespace internal {
108class IgnoredValue {
109 public:
110 template <typename T>
111 IgnoredValue(const T& /* ignored */) {}
112};
113}
114typedef internal::IgnoredValue Unused;
115}
116
117using ::testing::Unused;
118
119void MockFunction(Unused, int q, Unused) {
120 ++q;
121 ++q;
122 ++q;
123}
Alexander Kornienkoe20ce072014-11-05 11:08:39 +0000124
125namespace std {
126typedef decltype(nullptr) nullptr_t;
127}
128
129void f(std::nullptr_t) {}
Alexander Kornienko272397b2015-11-06 00:19:21 +0000130
131typedef void (F)(int);
132F f;
133void f(int x) {}