blob: 701c5fc428829c0df75392b432ff1e28e79e6ad9 [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
46 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);