|  | // RUN: %check_clang_tidy %s fuchsia-default-arguments %t | 
|  |  | 
|  | int foo(int value = 5) { return value; } | 
|  | // CHECK-MESSAGES: [[@LINE-1]]:9: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments] | 
|  | // CHECK-FIXES: int foo(int value) { return value; } | 
|  |  | 
|  | int f() { | 
|  | foo(); | 
|  | // CHECK-MESSAGES: [[@LINE-1]]:3: warning: calling a function that uses a default argument is disallowed [fuchsia-default-arguments] | 
|  | // CHECK-NEXT: note: default parameter was declared here: | 
|  | // CHECK-NEXT: int foo(int value = 5) { return value; } | 
|  | } | 
|  |  | 
|  | int bar(int value) { return value; } | 
|  |  | 
|  | int n() { | 
|  | foo(0); | 
|  | bar(0); | 
|  | } | 
|  |  | 
|  | class Baz { | 
|  | public: | 
|  | int a(int value = 5) { return value; } | 
|  | // CHECK-MESSAGES: [[@LINE-1]]:9: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments] | 
|  | // CHECK-FIXES: int a(int value) { return value; } | 
|  |  | 
|  | int b(int value) { return value; } | 
|  | }; | 
|  |  | 
|  | class Foo { | 
|  | // Fix should be suggested in declaration | 
|  | int a(int value = 53); | 
|  | // CHECK-MESSAGES: [[@LINE-1]]:9: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments] | 
|  | // CHECK-FIXES: int a(int value); | 
|  | }; | 
|  |  | 
|  | // Fix shouldn't be suggested in implementation | 
|  | int Foo::a(int value) { | 
|  | return value; | 
|  | } | 
|  |  | 
|  | // Elided functions | 
|  | void f(int = 5) {}; | 
|  | // CHECK-MESSAGES: [[@LINE-1]]:8: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments] | 
|  | // CHECK-FIXES: void f(int) {}; | 
|  |  | 
|  | void g(int) {}; | 
|  |  | 
|  | // Should not suggest fix for macro-defined parameters | 
|  | #define D(val) = val | 
|  |  | 
|  | void h(int i D(5)); | 
|  | // CHECK-MESSAGES: [[@LINE-1]]:8: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments] | 
|  | // CHECK-FIXES-NOT: void h(int i); | 
|  |  | 
|  | void x(int i); | 
|  | void x(int i = 12); | 
|  | // CHECK-MESSAGES: [[@LINE-1]]:8: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments] | 
|  | // CHECK-FIXES: void x(int i); | 
|  |  | 
|  | void x(int i) {} | 
|  |  | 
|  | struct S { | 
|  | void x(int i); | 
|  | }; | 
|  |  | 
|  | void S::x(int i = 12) {} | 
|  | // CHECK-MESSAGES: [[@LINE-1]]:11: warning: declaring a parameter with a default argument is disallowed [fuchsia-default-arguments] | 
|  | // CHECK-FIXES: void S::x(int i) {} | 
|  |  | 
|  | int main() { | 
|  | S s; | 
|  | s.x(); | 
|  | // CHECK-MESSAGES: [[@LINE-1]]:3: warning: calling a function that uses a default argument is disallowed [fuchsia-default-arguments] | 
|  | // CHECK-NEXT: note: default parameter was declared here: | 
|  | // CHECK-NEXT: void S::x(int i = 12) {} | 
|  | x(); | 
|  | // CHECK-MESSAGES: [[@LINE-1]]:3: warning: calling a function that uses a default argument is disallowed [fuchsia-default-arguments] | 
|  | // CHECK-NEXT: note: default parameter was declared here: | 
|  | // CHECK-NEXT: void x(int i = 12); | 
|  | } |