blob: 75c743b6f5a978c57fec93f6afb4291d90d0f2dd [file] [log] [blame]
Benjamin Kramer14d42d92014-07-15 16:47:09 +00001// RUN: $(dirname %s)/check_clang_tidy_fix.sh %s google-readability-function %t
2// REQUIRES: shell
3
4void Method(char *) { /* */ }
5// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: all parameters should be named in a function
6// CHECK-FIXES: void Method(char * /*unused*/) { /* */ }
Benjamin Kramer610ba532014-08-04 09:33:58 +00007void Method2(char *) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +00008// CHECK-MESSAGES: :[[@LINE-1]]:20: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +00009// CHECK-FIXES: void Method2(char * /*unused*/) {}
10void Method3(char *, void *) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000011// CHECK-MESSAGES: :[[@LINE-1]]:20: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000012// CHECK-FIXES: void Method3(char * /*unused*/, void * /*unused*/) {}
13void Method4(char *, int /*unused*/) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000014// CHECK-MESSAGES: :[[@LINE-1]]:20: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000015// CHECK-FIXES: void Method4(char * /*unused*/, int /*unused*/) {}
16void operator delete[](void *) throw() {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000017// CHECK-MESSAGES: :[[@LINE-1]]:30: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000018// CHECK-FIXES: void operator delete[](void * /*unused*/) throw() {}
19int Method5(int) { return 0; }
Benjamin Kramer14d42d92014-07-15 16:47:09 +000020// CHECK-MESSAGES: :[[@LINE-1]]:16: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000021// CHECK-FIXES: int Method5(int /*unused*/) { return 0; }
Benjamin Kramer14d42d92014-07-15 16:47:09 +000022void Method6(void (*)(void *)) {}
23// CHECK-MESSAGES: :[[@LINE-1]]:21: warning: all parameters should be named in a function
24// CHECK-FIXES: void Method6(void (* /*unused*/)(void *)) {}
Benjamin Kramer610ba532014-08-04 09:33:58 +000025template <typename T> void Method7(T) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000026// CHECK-MESSAGES: :[[@LINE-1]]:37: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000027// CHECK-FIXES: template <typename T> void Method7(T /*unused*/) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000028
29// Don't warn in macros.
Benjamin Kramer610ba532014-08-04 09:33:58 +000030#define M void MethodM(int) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000031M
32
Benjamin Kramer610ba532014-08-04 09:33:58 +000033void operator delete(void *x) throw() {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000034void Method7(char * /*x*/) {}
Benjamin Kramer610ba532014-08-04 09:33:58 +000035void Method8(char *x) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000036typedef void (*TypeM)(int x);
37void operator delete[](void *x) throw();
38void operator delete[](void * /*x*/) throw();
39
40struct X {
Benjamin Kramer610ba532014-08-04 09:33:58 +000041 X operator++(int) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000042// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000043// CHECK-FIXES: X operator++(int /*unused*/) {}
44 X operator--(int /*unused*/) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000045
Benjamin Kramere59cd6e2014-08-29 08:58:35 +000046 X(X&) = delete;
47 X &operator=(X&) = default;
48
Benjamin Kramer14d42d92014-07-15 16:47:09 +000049 const int &i;
50};
51
52void (*Func1)(void *);
53void Func2(void (*func)(void *)) {}
Benjamin Kramer610ba532014-08-04 09:33:58 +000054template <void Func(void *)> void Func3() {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000055
56template <typename T>
57struct Y {
Benjamin Kramer610ba532014-08-04 09:33:58 +000058 void foo(T) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000059// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: all parameters should be named in a function
Benjamin Kramer610ba532014-08-04 09:33:58 +000060// CHECK-FIXES: void foo(T /*unused*/) {}
Benjamin Kramer14d42d92014-07-15 16:47:09 +000061};
62
63Y<int> y;
64Y<float> z;
65
66struct Base {
67 virtual void foo(bool notThisOne);
68 virtual void foo(int argname);
69};
70
71struct Derived : public Base {
72 void foo(int);
73// CHECK-MESSAGES: :[[@LINE-1]]:15: warning: all parameters should be named in a function
74// CHECK-FIXES: void foo(int /*argname*/);
75};
Benjamin Kramer610ba532014-08-04 09:33:58 +000076
77void FDef(int);
78// CHECK-MESSAGES: :[[@LINE-1]]:14: warning: all parameters should be named in a function
79// CHECK-FIXES: void FDef(int /*n*/);
Benjamin Kramer78cd5462014-08-04 09:42:18 +000080void FDef(int n) {}
81
82void FDef2(int, int);
83// CHECK-MESSAGES: :[[@LINE-1]]:15: warning: all parameters should be named in a function
84// CHECK-FIXES: void FDef2(int /*n*/, int /*unused*/);
85void FDef2(int n, int) {}
86// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: all parameters should be named in a function
87// CHECK-FIXES: void FDef2(int n, int /*unused*/) {}
Benjamin Kramer610ba532014-08-04 09:33:58 +000088
89void FNoDef(int);