1103856Stjr/*
2103856Stjr * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
3103856Stjr *
4103856Stjr * SPDX-License-Identifier: BSD-2-Clause
5227753Stheraven */
6227753Stheraven
7227753Stheravenstruct foo { int x, y; };
8227753Stheraven
9227753Stheravenstruct bar { struct foo f; char c[3]; int a[6]; };
10103856Stjr
11103856Stjrint simple1(void)
12103856Stjr{
13103856Stjr  struct foo s = {1,2};
14103856Stjr  return s.x;
15103856Stjr}
16103856Stjr
17103856Stjrint simple2(void)
18103856Stjr{
19103856Stjr  struct foo s = {.y = 2};
20103856Stjr  return s.x;
21103856Stjr}
22103856Stjr
23103856Stjrint simple3(void)
24103856Stjr{
25103856Stjr  int array[10] = {1,2,3};
26103856Stjr  return array[1];
27103856Stjr}
28103856Stjr
29103856Stjrint simple4(void)
30103856Stjr{
31103856Stjr  int array[10] = {[1] = 4, [6] = 7,};
32103856Stjr  return array[6];
33103856Stjr}
34103856Stjr
35103856Stjrint simple5(void)
36103856Stjr{
37103856Stjr  char carr[5] = {1};
38227753Stheraven}
39103856Stjr
40103856Stjrstruct bar f(int i)
41103856Stjr{
42103856Stjr  return (struct bar){.f = {.y = i, .x = i+1,}, .c = {1,[2] = 2}};
43103856Stjr}
44103856Stjr
45103856Stjrint g(int j)
46103856Stjr{
47103856Stjr  struct bar b = {1,2,3,4,5};
48103856Stjr  return b.c[1]; // should be 4
49103856Stjr}
50103856Stjr
51103856Stjrint h(void)
52227753Stheraven{
53227753Stheraven  int array[10] = {[4] = 10,[5] = 10};
54227753Stheraven  return array[0]; // returns 0
55227753Stheraven}
56227753Stheraven
57227753Stheravenint function(void)
58227753Stheraven{
59227753Stheraven  struct foo record = {.x = 3,};
60227753Stheraven  return record.x;
61227753Stheraven}
62227753Stheraven
63227753Stheravenint function2(void)
64227753Stheraven{
65  struct bar b = { .f.x = 3, 1,2 };
66  return b.f.x; // returns 3
67}
68
69int function3(void)
70{
71  int a[5] = {1,2,3,4,5,[1] = 10};
72  return a[1];
73}
74
75int main(int argc, char**argv)
76{
77  struct foo f = {10,12};
78  struct bar test = {f,{1,2},{101}}, test2 = {{1}, {2}, {3}};
79  struct bar b_array[10] = { test, test2, 1, 2 };
80  int aa[] = {1,2,3,[10] = 6};
81  return b_array[2].f.x + b_array[0].c[2] + b_array[1].c[0]; // returns 3
82}
83
84struct sjwbar {
85  int words[1];
86};
87typedef struct sjwbar bar_t;
88
89int sjw(int sj_w)
90{
91  bar_t w = { .words = {sj_w} };
92}
93
94enum anenum { val1, val2 = -1 };
95
96struct inc_enum {
97  enum anenum e;
98  int x;
99};
100
101int enum_test(int x)
102{
103  struct inc_enum s = { .x = 3 }, t = { .e = val2 };
104  return t.e;
105}
106