1 struct things_to_sum {
2     int a;
3     int b;
4     int c;
5 };
6 
sum_things(struct things_to_sum tts)7 int sum_things(struct things_to_sum tts)
8 {
9     return tts.a + tts.b + tts.c;
10 }
11 
main(int argc,char const * argv[])12 int main (int argc, char const *argv[])
13 {
14     struct point_tag {
15         int x;
16         int y;
17         char padding[0];
18     }; //% self.expect("frame variable pt.padding[0]", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["pt.padding[0] = "])
19        //% self.expect("frame variable pt.padding[1]", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["pt.padding[1] = "])
20        //% self.expect_expr("pt.padding[0]", result_type="char")
21        //% self.expect("image lookup -t point_tag", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ['padding[]'])
22 
23     struct {} empty;
24     //% self.expect("frame variable empty", substrs = ["empty = {}"])
25     //% self.expect("expression -- sizeof(empty)", substrs = ["= 0"])
26 
27     struct rect_tag {
28         struct point_tag bottom_left;
29         struct point_tag top_right;
30     };
31     struct point_tag pt = { 2, 3, {} };
32     struct rect_tag rect = {{1, 2, {}}, {3, 4, {}}};
33     struct things_to_sum tts = { 2, 3, 4 };
34 
35     int sum = sum_things(tts); //% self.expect_expr("&pt == (struct point_tag*)0", result_value="false")
36                                //% self.expect_expr("sum_things(tts)", result_value="9")
37     return 0;
38 }
39