/* { dg-do compile } */
/* { dg-additional-options "-Wno-objc-root-class -fsyntax-only" } */

__attribute__((objc_nullability(0))) id a;
__attribute__((objc_nullability(4))) id e_1; /* { dg-error {'objc_nullability' attribute argument '4' is not an integer constant between 0 and 3} } */
__attribute__((objc_nullability(-22))) id e_2; /* { dg-error {'objc_nullability' attribute argument '-22' is not an integer constant between 0 and 3} } */
__attribute__((objc_nullability("unspecified"))) id b;
__attribute__((objc_nullability("nullable"))) id c;
__attribute__((objc_nullability("nonnull"))) id d;
__attribute__((objc_nullability("resettable"))) id e;
__attribute__((objc_nullability("nonsense"))) id e_3; /* { dg-error {'objc_nullability' attribute argument '"nonsense"' is not recognised} } */
__attribute__((objc_nullability(noGoingToWork))) id e_4; /* { dg-error {'noGoingToWork' undeclared here} } */

@interface MyRoot
{
  __attribute__((objc_nullability(0))) id iv_a;
  __attribute__((objc_nullability(3))) struct { int bad_a; } s;/* { dg-error {'objc_nullability' cannot be applied to non-pointer type 'struct <anonymous>'} } */
  __attribute__((objc_nullability("resettable"))) int iv_b;/* { dg-error {'objc_nullability' cannot be applied to non-pointer type 'int'} } */
}
@end
