77 lines
956 B
C
77 lines
956 B
C
/* { dg-do compile } */
|
|
/* { dg-options "-fplan9-extensions" } */
|
|
|
|
/* Test for ambiguity when using the Plan 9 extensions. */
|
|
|
|
struct A {
|
|
char a; /* { dg-error "duplicate member" } */
|
|
};
|
|
|
|
struct B
|
|
{
|
|
struct A;
|
|
struct A;
|
|
};
|
|
|
|
char
|
|
f1 (struct B *p)
|
|
{
|
|
return p->a; /* { dg-error "no member" } */
|
|
}
|
|
|
|
void
|
|
f2 (struct A *p) /* { dg-message "expected" } */
|
|
{
|
|
}
|
|
|
|
void
|
|
f3 (struct B *p)
|
|
{
|
|
f2 (p); /* { dg-warning "incompatible pointer type" } */
|
|
}
|
|
|
|
struct C
|
|
{
|
|
char c; /* { dg-error "duplicate member" } */
|
|
};
|
|
|
|
struct D
|
|
{
|
|
struct C;
|
|
};
|
|
|
|
struct E
|
|
{
|
|
struct C;
|
|
struct D;
|
|
};
|
|
|
|
char
|
|
f4 (struct E *p)
|
|
{
|
|
return p->c; /* { dg-error "no member" } */
|
|
}
|
|
|
|
void
|
|
f6 (struct C *p) /* { dg-message "expected" } */
|
|
{
|
|
}
|
|
|
|
void
|
|
f7 (struct E *p)
|
|
{
|
|
f6 (p); /* { dg-warning "incompatible pointer type" } */
|
|
}
|
|
|
|
struct A
|
|
f8 (struct B *p)
|
|
{
|
|
return p->A; /* { dg-error "no member" } */
|
|
}
|
|
|
|
struct C
|
|
f9 (struct E *p)
|
|
{
|
|
return p->C; /* { dg-error "no member" } */
|
|
}
|