1 /* Test for various initializer warnings being suppressed by use of
2    designated initializers.  */
3 
4 /* { dg-do compile } */
5 /* { dg-options "-std=c99 -W -Wall -Wtraditional" } */
6 
7 
8 struct t
9 {
10   int a;
11   int b; /* { dg-message "note: 'b' declared here" } */
12   int c;
13 };
14 
15 union u
16 {
17   int n;
18   float i;
19 };
20 
21 struct multilevel
22 {
23    int x;
24    struct t t;
25    union u u;
26    union u v;
27    char *f;
28 };
29 
30 struct t T0 = { 1 };		/* { dg-warning "missing init" } */
31 
32 struct t T1 = { .a = 1 };	/* { dg-bogus "(missing|near) init" } */
33 
34 union u U0 = { 1 };		/* { dg-warning "initialization of union" } */
35 union u U1 = { .i = 1 };	/* { dg-bogus "initialization of union" } */
36 
37 struct multilevel M =
38 {
39   12,
40   { .b = 3 },			/* { dg-bogus "missing init" } */
41   { 4 },			/* { dg-warning "initialization of union" } */
42   { .n = 9 },			/* { dg-bogus "initialization of union" } */
43   /* "string here" */
44 };				/* { dg-warning "missing init" } */
45 /* { dg-message "declared here" "near init" { target *-*-* } 27 } */
46