]>
Commit | Line | Data |
---|---|---|
223e47cc LB |
1 | // RUN: %clang_cc1 -fsyntax-only -verify -Wmissing-field-initializers %s |
2 | ||
3 | // This was PR4808. | |
4 | ||
5 | struct Foo { int a, b; }; | |
6 | ||
7 | struct Foo foo0 = { 1 }; // expected-warning {{missing field 'b' initializer}} | |
8 | struct Foo foo1 = { .a = 1 }; // designator avoids MFI warning | |
9 | struct Foo foo2 = { .b = 1 }; // designator avoids MFI warning | |
10 | ||
11 | struct Foo bar0[] = { | |
12 | { 1,2 }, | |
13 | { 1 }, // expected-warning {{missing field 'b' initializer}} | |
14 | { 1,2 } | |
15 | }; | |
16 | ||
17 | struct Foo bar1[] = { | |
18 | 1, 2, | |
19 | 1, 2, | |
20 | 1 | |
21 | }; // expected-warning {{missing field 'b' initializer}} | |
22 | ||
23 | struct Foo bar2[] = { {}, {}, {} }; | |
24 | ||
25 | struct One { int a; int b; }; | |
26 | struct Two { float c; float d; float e; }; | |
27 | ||
28 | struct Three { | |
29 | union { | |
30 | struct One one; | |
31 | struct Two two; | |
32 | } both; | |
33 | }; | |
34 | ||
35 | struct Three t0 = { | |
36 | { .one = { 1, 2 } } | |
37 | }; | |
38 | struct Three t1 = { | |
39 | { .two = { 1.0f, 2.0f, 3.0f } } | |
40 | }; | |
41 | ||
42 | struct Three data[] = { | |
43 | { { .one = { 1, 2 } } }, | |
44 | { { .one = { 1 } } }, // expected-warning {{missing field 'b' initializer}} | |
45 | { { .two = { 1.0f, 2.0f, 3.0f } } }, | |
46 | { { .two = { 1.0f, 2.0f } } } // expected-warning {{missing field 'e' initializer}} | |
47 | }; | |
48 | ||
49 | struct { int:5; int a; int:5; int b; int:5; } noNamedImplicit[] = { | |
50 | { 1, 2 }, | |
51 | { 1 } // expected-warning {{missing field 'b' initializer}} | |
52 | }; |