1*89a1d03eSRichard // RUN: %check_clang_tidy %s fuchsia-default-arguments-declarations %t 2*89a1d03eSRichard foo(int value=5)3*89a1d03eSRichardint foo(int value = 5) { return value; } 4*89a1d03eSRichard // CHECK-NOTES: [[@LINE-1]]:9: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments-declarations] 5*89a1d03eSRichard // CHECK-FIXES: int foo(int value) { return value; } 6*89a1d03eSRichard bar(int value)7*89a1d03eSRichardint bar(int value) { return value; } 8*89a1d03eSRichard 9*89a1d03eSRichard class Baz { 10*89a1d03eSRichard public: a(int value=5)11*89a1d03eSRichard int a(int value = 5) { return value; } 12*89a1d03eSRichard // CHECK-NOTES: [[@LINE-1]]:9: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments-declarations] 13*89a1d03eSRichard // CHECK-FIXES: int a(int value) { return value; } 14*89a1d03eSRichard b(int value)15*89a1d03eSRichard int b(int value) { return value; } 16*89a1d03eSRichard }; 17*89a1d03eSRichard 18*89a1d03eSRichard class Foo { 19*89a1d03eSRichard // Fix should be suggested in declaration 20*89a1d03eSRichard int a(int value = 53); 21*89a1d03eSRichard // CHECK-NOTES: [[@LINE-1]]:9: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments-declarations] 22*89a1d03eSRichard // CHECK-FIXES: int a(int value); 23*89a1d03eSRichard }; 24*89a1d03eSRichard 25*89a1d03eSRichard // Fix shouldn't be suggested in implementation a(int value)26*89a1d03eSRichardint Foo::a(int value) { 27*89a1d03eSRichard return value; 28*89a1d03eSRichard } 29*89a1d03eSRichard 30*89a1d03eSRichard // Elided functions f(int=5)31*89a1d03eSRichardvoid f(int = 5) {}; 32*89a1d03eSRichard // CHECK-NOTES: [[@LINE-1]]:8: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments-declarations] 33*89a1d03eSRichard // CHECK-FIXES: void f(int) {}; 34*89a1d03eSRichard g(int)35*89a1d03eSRichardvoid g(int) {}; 36*89a1d03eSRichard 37*89a1d03eSRichard // Should not suggest fix for macro-defined parameters 38*89a1d03eSRichard #define D(val) = val 39*89a1d03eSRichard 40*89a1d03eSRichard void h(int i D(5)); 41*89a1d03eSRichard // CHECK-NOTES: [[@LINE-1]]:8: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments-declarations] 42*89a1d03eSRichard // CHECK-FIXES-NOT: void h(int i); 43*89a1d03eSRichard 44*89a1d03eSRichard void x(int i); 45*89a1d03eSRichard void x(int i = 12); 46*89a1d03eSRichard // CHECK-NOTES: [[@LINE-1]]:8: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments-declarations] 47*89a1d03eSRichard // CHECK-FIXES: void x(int i); 48*89a1d03eSRichard x(int i)49*89a1d03eSRichardvoid x(int i) {} 50*89a1d03eSRichard 51*89a1d03eSRichard struct S { 52*89a1d03eSRichard void x(int i); 53*89a1d03eSRichard }; 54*89a1d03eSRichard x(int i=12)55*89a1d03eSRichardvoid S::x(int i = 12) {} 56*89a1d03eSRichard // CHECK-NOTES: [[@LINE-1]]:11: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments-declarations] 57*89a1d03eSRichard // CHECK-FIXES: void S::x(int i) {} 58