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