]>
Commit | Line | Data |
---|---|---|
065d214c MP |
1 | /* Test for flexible array members. Test for where structures with |
2 | such members may not occur. */ | |
3 | /* { dg-do compile } */ | |
4 | /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ | |
5 | ||
6 | typedef int T[]; | |
7 | struct flex { int a; T b; }; | |
8 | union rf1 { struct flex a; int b; }; | |
9 | union rf2 { int a; struct flex b; }; | |
10 | union rf3 { int a; union rf1 b; }; | |
11 | union rf4 { union rf2 a; int b; }; | |
12 | ||
13 | /* The above structure and unions may not be members of structures or | |
14 | elements of arrays (6.7.2.1#2). */ | |
15 | ||
16 | struct t0 { struct flex a; }; /* { dg-error "invalid use of structure" } */ | |
17 | struct t1 { union rf1 a; }; /* { dg-error "invalid use of structure" } */ | |
18 | struct t2 { union rf2 a; }; /* { dg-error "invalid use of structure" } */ | |
19 | struct t3 { union rf3 a; }; /* { dg-error "invalid use of structure" } */ | |
20 | struct t4 { union rf4 a; }; /* { dg-error "invalid use of structure" } */ | |
21 | ||
22 | void f0 (struct flex[]); /* { dg-error "invalid use of structure" } */ | |
23 | void f1 (union rf1[]); /* { dg-error "invalid use of structure" } */ | |
24 | void f2 (union rf2[]); /* { dg-error "invalid use of structure" } */ | |
25 | void f3 (union rf3[]); /* { dg-error "invalid use of structure" } */ | |
26 | void f4 (union rf4[]); /* { dg-error "invalid use of structure" } */ | |
27 | ||
28 | struct flex a0[1]; /* { dg-error "invalid use of structure" } */ | |
29 | union rf1 a1[1]; /* { dg-error "invalid use of structure" } */ | |
30 | union rf2 a2[1]; /* { dg-error "invalid use of structure" } */ | |
31 | union rf3 a3[1]; /* { dg-error "invalid use of structure" } */ | |
32 | union rf4 a4[1]; /* { dg-error "invalid use of structure" } */ |