// RUN: %check_clang_tidy %s cppcoreguidelines-pro-bounds-pointer-arithmetic %t

enum E {
  ENUM_LITERAL = 1
};

int i = 4;
int j = 1;
int *p = 0;
int *q = 0;

void fail() {
  q = p + 4;
  // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: do not use pointer arithmetic [cppcoreguidelines-pro-bounds-pointer-arithmetic]
  p = q + i;
  // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: do not use pointer arithmetic
  p = q + ENUM_LITERAL;
  // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: do not use pointer arithmetic

  q = p - 1;
  // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: do not use pointer arithmetic
  p = q - i;
  // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: do not use pointer arithmetic
  p = q - ENUM_LITERAL;
  // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: do not use pointer arithmetic

  p += 4;
  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use pointer arithmetic
  p += i;
  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use pointer arithmetic
  p += ENUM_LITERAL;
  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use pointer arithmetic

  q -= 1;
  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use pointer arithmetic
  q -= i;
  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use pointer arithmetic
  q -= ENUM_LITERAL;
  // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use pointer arithmetic

  p++;
  // CHECK-MESSAGES: :[[@LINE-1]]:4: warning: do not use pointer arithmetic
  ++p;
  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not use pointer arithmetic

  p--;
  // CHECK-MESSAGES: :[[@LINE-1]]:4: warning: do not use pointer arithmetic
  --p;
  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not use pointer arithmetic

  i = p[1];
  // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: do not use pointer arithmetic
}

struct S {
  operator int() const;
};

void f(S &s) {
  int *i;
  i = i + s;
  // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: do not use pointer arithmetic
}

void f2(int i[]) {
  i[1] = 0;
  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not use pointer arithmetic
}

void okay() {
  int a[3];
  i = a[2]; // OK, access to array

  p = q;
  p = &i;

  i++;
  ++i;
  i--;
  --i;
  i += 1;
  i -= 1;
  i = j + 1;
  i = j - 1;

  auto diff = p - q; // OK, result is arithmetic

  for(int ii : a) ; // OK, pointer arithmetic generated by compiler
}
