// RUN: %clang_cc1 -fsyntax-only -Wnonnull -Wnullability %s -verify
// rdar://19160762

#if __has_feature(nullability)
#else
#  error nullability feature should be defined
#endif


int * _Nullable foo(int * _Nonnull x);

int *_Nonnull ret_nonnull();

int *foo(int *x) {
  return 0;
}

int * _Nullable foo1(int * _Nonnull x); // expected-note {{previous declaration is here}}

int *foo1(int * _Nullable x) { // expected-warning {{nullability specifier '_Nullable' conflicts with existing specifier '_Nonnull'}}
  return 0;
}

int * _Nullable foo2(int * _Nonnull x);

int *foo2(int * _Nonnull x) {
  return 0;
}

int * _Nullable foo3(int * _Nullable x); // expected-note {{previous declaration is here}}

int *foo3(int * _Nonnull x) { // expected-warning {{nullability specifier '_Nonnull' conflicts with existing specifier '_Nullable'}}
  return 0;
}

int * ret_nonnull() {
  return 0; // expected-warning {{null returned from function that requires a non-null return value}}
}

#define SAFE_CALL(X) if (X) foo(X)
int main () {
  foo(0); // expected-warning {{null passed to a callee that requires a non-null argument}}
  (void)sizeof(foo(0)); // expect no diagnostic in unevaluated context.
  SAFE_CALL(0); // expect no diagnostic for unreachable code.
}
