/* Tests for the "Initializer entry defined twice" warning. */ /* Initializing a struct field twice should trigger the warning. */ struct normal { int field1; int field2; }; static struct normal struct_error = { .field1 = 0, .field1 = 0 }; /* Initializing two different fields of a union should trigger the warning. */ struct has_union { int x; union { int a; int b; } y; int z; }; static struct has_union union_error = { .y = { .a = 0, .b = 0 } }; /* Empty structures can make two fields have the same offset in a struct. * Initializing both should not trigger the warning. */ struct empty { }; struct same_offset { struct empty field1; int field2; }; static struct same_offset not_an_error = { .field1 = { }, .field2 = 0 }; /* * _Bools generally take a whole byte, so ensure that we can initialize * them without spewing a warning. */ static _Bool boolarray[3] = { [0] = 1, [1] = 1, }; /* * check-name: Initializer entry defined twice * * check-error-start initializer-entry-defined-twice.c:10:10: warning: Initializer entry defined twice initializer-entry-defined-twice.c:11:10: also defined here initializer-entry-defined-twice.c:26:18: warning: Initializer entry defined twice initializer-entry-defined-twice.c:27:18: also defined here * check-error-end */