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