1f08c3bdfSopenharmony_cistruct s1 {
2f08c3bdfSopenharmony_ci	int x;
3f08c3bdfSopenharmony_ci	int y;
4f08c3bdfSopenharmony_ci};
5f08c3bdfSopenharmony_ci
6f08c3bdfSopenharmony_cistruct s2 {
7f08c3bdfSopenharmony_ci	int x;
8f08c3bdfSopenharmony_ci	int y;
9f08c3bdfSopenharmony_ci} __attribute__((designated_init));
10f08c3bdfSopenharmony_ci
11f08c3bdfSopenharmony_cistruct nest1 {
12f08c3bdfSopenharmony_ci	struct s1 s1;
13f08c3bdfSopenharmony_ci	struct s2 s2;
14f08c3bdfSopenharmony_ci};
15f08c3bdfSopenharmony_ci
16f08c3bdfSopenharmony_cistruct nest2 {
17f08c3bdfSopenharmony_ci	struct s1 s1;
18f08c3bdfSopenharmony_ci	struct s2 s2;
19f08c3bdfSopenharmony_ci} __attribute__((designated_init));
20f08c3bdfSopenharmony_ci
21f08c3bdfSopenharmony_cistatic struct s1 s1_positional = { 5, 10 };
22f08c3bdfSopenharmony_cistatic struct s1 s1_designated = { .x = 5, .y = 10 };
23f08c3bdfSopenharmony_cistatic struct s2 s2_positional = { 5, 10 };
24f08c3bdfSopenharmony_cistatic struct s2 s2_designated = { .x = 5, .y = 10 };
25f08c3bdfSopenharmony_cistatic struct nest1 nest1_positional = {
26f08c3bdfSopenharmony_ci	{ 5, 10 },
27f08c3bdfSopenharmony_ci	{ 5, 10 },
28f08c3bdfSopenharmony_ci};
29f08c3bdfSopenharmony_cistatic struct nest1 nest1_designated_outer = {
30f08c3bdfSopenharmony_ci	.s1 = { 5, 10 },
31f08c3bdfSopenharmony_ci	.s2 = { 5, 10 },
32f08c3bdfSopenharmony_ci};
33f08c3bdfSopenharmony_cistatic struct nest1 nest1_designated_inner = {
34f08c3bdfSopenharmony_ci	{ .x = 5, .y = 10 },
35f08c3bdfSopenharmony_ci	{ .x = 5, .y = 10 },
36f08c3bdfSopenharmony_ci};
37f08c3bdfSopenharmony_cistatic struct nest1 nest1_designated_both = {
38f08c3bdfSopenharmony_ci	.s1 = { .x = 5, .y = 10 },
39f08c3bdfSopenharmony_ci	.s2 = { .x = 5, .y = 10 },
40f08c3bdfSopenharmony_ci};
41f08c3bdfSopenharmony_cistatic struct nest2 nest2_positional = {
42f08c3bdfSopenharmony_ci	{ 5, 10 },
43f08c3bdfSopenharmony_ci	{ 5, 10 },
44f08c3bdfSopenharmony_ci};
45f08c3bdfSopenharmony_cistatic struct nest2 nest2_designated_outer = {
46f08c3bdfSopenharmony_ci	.s1 = { 5, 10 },
47f08c3bdfSopenharmony_ci	.s2 = { 5, 10 },
48f08c3bdfSopenharmony_ci};
49f08c3bdfSopenharmony_cistatic struct nest2 nest2_designated_inner = {
50f08c3bdfSopenharmony_ci	{ .x = 5, .y = 10 },
51f08c3bdfSopenharmony_ci	{ .x = 5, .y = 10 },
52f08c3bdfSopenharmony_ci};
53f08c3bdfSopenharmony_cistatic struct nest2 nest2_designated_both = {
54f08c3bdfSopenharmony_ci	.s1 = { .x = 5, .y = 10 },
55f08c3bdfSopenharmony_ci	.s2 = { .x = 5, .y = 10 },
56f08c3bdfSopenharmony_ci};
57f08c3bdfSopenharmony_ci
58f08c3bdfSopenharmony_cistatic struct {
59f08c3bdfSopenharmony_ci	int x;
60f08c3bdfSopenharmony_ci	int y;
61f08c3bdfSopenharmony_ci} __attribute__((designated_init))
62f08c3bdfSopenharmony_ci	anon_positional = { 5, 10 },
63f08c3bdfSopenharmony_ci	anon_designated = { .x = 5, .y = 10};
64f08c3bdfSopenharmony_ci
65f08c3bdfSopenharmony_cistatic struct s1 s1_array[] = {
66f08c3bdfSopenharmony_ci	{ 5, 10 },
67f08c3bdfSopenharmony_ci	{ .x = 5, .y = 10 },
68f08c3bdfSopenharmony_ci};
69f08c3bdfSopenharmony_ci
70f08c3bdfSopenharmony_cistatic struct s2 s2_array[] = {
71f08c3bdfSopenharmony_ci	{ 5, 10 },
72f08c3bdfSopenharmony_ci	{ .x = 5, .y = 10 },
73f08c3bdfSopenharmony_ci};
74f08c3bdfSopenharmony_ci
75f08c3bdfSopenharmony_cistatic struct s1 ret_s1_positional(void)
76f08c3bdfSopenharmony_ci{
77f08c3bdfSopenharmony_ci	return ((struct s1){ 5, 10 });
78f08c3bdfSopenharmony_ci}
79f08c3bdfSopenharmony_ci
80f08c3bdfSopenharmony_cistatic struct s1 ret_s1_designated(void)
81f08c3bdfSopenharmony_ci{
82f08c3bdfSopenharmony_ci	return ((struct s1){ .x = 5, .y = 10 });
83f08c3bdfSopenharmony_ci}
84f08c3bdfSopenharmony_ci
85f08c3bdfSopenharmony_cistatic struct s2 ret_s2_positional(void)
86f08c3bdfSopenharmony_ci{
87f08c3bdfSopenharmony_ci	return ((struct s2){ 5, 10 });
88f08c3bdfSopenharmony_ci}
89f08c3bdfSopenharmony_ci
90f08c3bdfSopenharmony_cistatic struct s2 ret_s2_designated(void)
91f08c3bdfSopenharmony_ci{
92f08c3bdfSopenharmony_ci	return ((struct s2){ .x = 5, .y = 10 });
93f08c3bdfSopenharmony_ci}
94f08c3bdfSopenharmony_ci
95f08c3bdfSopenharmony_cistatic struct nest1 ret_nest1_positional(void)
96f08c3bdfSopenharmony_ci{
97f08c3bdfSopenharmony_ci	return ((struct nest1){
98f08c3bdfSopenharmony_ci			{ 5, 10 },
99f08c3bdfSopenharmony_ci			{ 5, 10 },
100f08c3bdfSopenharmony_ci		});
101f08c3bdfSopenharmony_ci}
102f08c3bdfSopenharmony_ci
103f08c3bdfSopenharmony_cistatic struct nest1 ret_nest1_designated_outer(void)
104f08c3bdfSopenharmony_ci{
105f08c3bdfSopenharmony_ci	return ((struct nest1){
106f08c3bdfSopenharmony_ci			.s1 = { 5, 10 },
107f08c3bdfSopenharmony_ci			.s2 = { 5, 10 },
108f08c3bdfSopenharmony_ci		});
109f08c3bdfSopenharmony_ci}
110f08c3bdfSopenharmony_ci
111f08c3bdfSopenharmony_cistatic struct nest1 ret_nest1_designated_inner(void)
112f08c3bdfSopenharmony_ci{
113f08c3bdfSopenharmony_ci	return ((struct nest1){
114f08c3bdfSopenharmony_ci			{ .x = 5, .y = 10 },
115f08c3bdfSopenharmony_ci			{ .x = 5, .y = 10 },
116f08c3bdfSopenharmony_ci		});
117f08c3bdfSopenharmony_ci}
118f08c3bdfSopenharmony_ci
119f08c3bdfSopenharmony_cistatic struct nest1 ret_nest1_designated_both(void)
120f08c3bdfSopenharmony_ci{
121f08c3bdfSopenharmony_ci	return ((struct nest1){
122f08c3bdfSopenharmony_ci			.s1 = { .x = 5, .y = 10 },
123f08c3bdfSopenharmony_ci			.s2 = { .x = 5, .y = 10 },
124f08c3bdfSopenharmony_ci		});
125f08c3bdfSopenharmony_ci}
126f08c3bdfSopenharmony_ci
127f08c3bdfSopenharmony_cistatic struct nest2 ret_nest2_positional(void)
128f08c3bdfSopenharmony_ci{
129f08c3bdfSopenharmony_ci	return ((struct nest2){
130f08c3bdfSopenharmony_ci			{ 5, 10 },
131f08c3bdfSopenharmony_ci			{ 5, 10 },
132f08c3bdfSopenharmony_ci		});
133f08c3bdfSopenharmony_ci}
134f08c3bdfSopenharmony_ci
135f08c3bdfSopenharmony_cistatic struct nest2 ret_nest2_designated_outer(void)
136f08c3bdfSopenharmony_ci{
137f08c3bdfSopenharmony_ci	return ((struct nest2){
138f08c3bdfSopenharmony_ci			.s1 = { 5, 10 },
139f08c3bdfSopenharmony_ci			.s2 = { 5, 10 },
140f08c3bdfSopenharmony_ci		});
141f08c3bdfSopenharmony_ci}
142f08c3bdfSopenharmony_ci
143f08c3bdfSopenharmony_cistatic struct nest2 ret_nest2_designated_inner(void)
144f08c3bdfSopenharmony_ci{
145f08c3bdfSopenharmony_ci	return ((struct nest2){
146f08c3bdfSopenharmony_ci			{ .x = 5, .y = 10 },
147f08c3bdfSopenharmony_ci			{ .x = 5, .y = 10 },
148f08c3bdfSopenharmony_ci		});
149f08c3bdfSopenharmony_ci}
150f08c3bdfSopenharmony_ci
151f08c3bdfSopenharmony_cistatic struct nest2 ret_nest2_designated_both(void)
152f08c3bdfSopenharmony_ci{
153f08c3bdfSopenharmony_ci	return ((struct nest2){
154f08c3bdfSopenharmony_ci			.s1 = { .x = 5, .y = 10 },
155f08c3bdfSopenharmony_ci			.s2 = { .x = 5, .y = 10 },
156f08c3bdfSopenharmony_ci		});
157f08c3bdfSopenharmony_ci}
158f08c3bdfSopenharmony_ci/*
159f08c3bdfSopenharmony_ci * check-name: designated_init attribute
160f08c3bdfSopenharmony_ci *
161f08c3bdfSopenharmony_ci * check-error-start
162f08c3bdfSopenharmony_cidesignated-init.c:23:36: warning: in initializer for s2_positional: positional init of field in struct s2, declared with attribute designated_init
163f08c3bdfSopenharmony_cidesignated-init.c:23:39: warning: in initializer for s2_positional: positional init of field in struct s2, declared with attribute designated_init
164f08c3bdfSopenharmony_cidesignated-init.c:27:11: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
165f08c3bdfSopenharmony_cidesignated-init.c:27:14: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
166f08c3bdfSopenharmony_cidesignated-init.c:31:17: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
167f08c3bdfSopenharmony_cidesignated-init.c:31:20: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
168f08c3bdfSopenharmony_cidesignated-init.c:42:9: warning: in initializer for nest2_positional: positional init of field in struct nest2, declared with attribute designated_init
169f08c3bdfSopenharmony_cidesignated-init.c:43:9: warning: in initializer for nest2_positional: positional init of field in struct nest2, declared with attribute designated_init
170f08c3bdfSopenharmony_cidesignated-init.c:43:11: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
171f08c3bdfSopenharmony_cidesignated-init.c:43:14: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
172f08c3bdfSopenharmony_cidesignated-init.c:47:17: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
173f08c3bdfSopenharmony_cidesignated-init.c:47:20: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
174f08c3bdfSopenharmony_cidesignated-init.c:50:9: warning: in initializer for nest2_designated_inner: positional init of field in struct nest2, declared with attribute designated_init
175f08c3bdfSopenharmony_cidesignated-init.c:51:9: warning: in initializer for nest2_designated_inner: positional init of field in struct nest2, declared with attribute designated_init
176f08c3bdfSopenharmony_cidesignated-init.c:62:29: warning: in initializer for anon_positional: positional init of field in struct <noident>, declared with attribute designated_init
177f08c3bdfSopenharmony_cidesignated-init.c:62:32: warning: in initializer for anon_positional: positional init of field in struct <noident>, declared with attribute designated_init
178f08c3bdfSopenharmony_cidesignated-init.c:71:11: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
179f08c3bdfSopenharmony_cidesignated-init.c:71:14: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
180f08c3bdfSopenharmony_cidesignated-init.c:87:30: warning: positional init of field in struct s2, declared with attribute designated_init
181f08c3bdfSopenharmony_cidesignated-init.c:87:33: warning: positional init of field in struct s2, declared with attribute designated_init
182f08c3bdfSopenharmony_cidesignated-init.c:99:27: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
183f08c3bdfSopenharmony_cidesignated-init.c:99:30: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
184f08c3bdfSopenharmony_cidesignated-init.c:107:33: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
185f08c3bdfSopenharmony_cidesignated-init.c:107:36: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
186f08c3bdfSopenharmony_cidesignated-init.c:130:25: warning: positional init of field in struct nest2, declared with attribute designated_init
187f08c3bdfSopenharmony_cidesignated-init.c:131:25: warning: positional init of field in struct nest2, declared with attribute designated_init
188f08c3bdfSopenharmony_cidesignated-init.c:131:27: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
189f08c3bdfSopenharmony_cidesignated-init.c:131:30: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
190f08c3bdfSopenharmony_cidesignated-init.c:139:33: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
191f08c3bdfSopenharmony_cidesignated-init.c:139:36: warning: in initializer for s2: positional init of field in struct s2, declared with attribute designated_init
192f08c3bdfSopenharmony_cidesignated-init.c:146:25: warning: positional init of field in struct nest2, declared with attribute designated_init
193f08c3bdfSopenharmony_cidesignated-init.c:147:25: warning: positional init of field in struct nest2, declared with attribute designated_init
194f08c3bdfSopenharmony_ci * check-error-end
195f08c3bdfSopenharmony_ci */
196