// 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); }