// RUN: %check_clang_tidy %s misc-misplaced-const %t

typedef int plain_i;
typedef int *ip;
typedef const int *cip;

typedef void (*func_ptr)(void);

void func(void) {
  // ok
  const int *i0 = 0;
  const plain_i *i1 = 0;
  const cip i2 = 0; // const applies to both pointer and pointee.

  // Not ok
  const ip i3 = 0;
  // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: 'i3' declared with a const-qualified typedef type; results in the type being 'int *const' instead of 'const int *'

  ip const i4 = 0;
  // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: 'i4' declared with a const-qualified

  const volatile ip i5 = 0;
  // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: 'i5' declared with a const-qualified typedef type; results in the type being 'int *const volatile' instead of 'const int *volatile'
}

void func2(const plain_i *i1,
           const cip i2,
           const ip i3,
           // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: 'i3' declared with a const-qualified
           const int *i4) {
}

struct S {
  const int *i0;
  const plain_i *i1;
  const cip i2;
  const ip i3;
  // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: 'i3' declared with a const-qualified
};

// Function pointers should not be diagnosed because a function
// pointer type can never be const.
void func3(const func_ptr fp) {
  const func_ptr fp2 = fp;
}
