/* APPLE LOCAL file radar 4592503 */
/* Check that gcc issues warning when __weak attribute is used unwisely. */
/* { dg-do compile { target *-*-darwin* } } */
/* { dg-options "-fobjc-gc" } */

struct S {
	__weak id  p; /* { dg-warning "__weak attribute cannot be specified on a field declaration" } */
};
union U {
	__weak id  p; /* { dg-warning "__weak attribute cannot be specified on a field declaration" } */
};
@interface Foo {
struct {
   __weak id i; /* { dg-warning "__weak attribute cannot be specified on a field declaration" } */
} IVAR;
union {
    __weak id u;  /* { dg-warning "__weak attribute cannot be specified on a field declaration" } */
} UVAR;
__weak id  arr[3]; // ok
__weak id  aok;   // ok
}
@end
__weak id global;	// ok

__weak id ggg = 0;	// ok

static id ppp;		// ok

extern __weak id ewid;  // ok

int main ()
{
  __weak id  local; /* { dg-warning "__weak attribute cannot be specified on a local object declaration" } */
  static __weak id  s;		// ok
  extern __weak id  e;		// ok
}

