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