/ tests / tests / compiler / function / flatten_inlined_tuples_of_structs.adl
flatten_inlined_tuples_of_structs.adl
 1  
 2  program test.alpha {
 3      struct Extra {
 4          c: u8,
 5      }
 6  
 7      struct Data {
 8          a: u8,
 9          b: u8,
10          c: Extra,
11      }
12  
13      inline foo(a: u8, b: u8) -> (u8, u8, Data) {
14          let extra: Extra = Extra { c: a };
15          let data: Data = Data { a: a, b: b, c: extra };
16          if (a == b) {
17              return (a, b, data);
18          }
19          let c: u8 = a + b;
20          let d: u8 = a - b;
21  
22          return (c, d, data);
23      }
24  
25      transition bar(flag1: bool, flag2: bool, a: u8, b: u8) -> (u8, u8, Data) {
26          let start: (u8, u8, Data) = foo(a, b);
27          if flag1 {
28              start = foo(start.0, start.2.c.c);
29          } else {
30  
31              if flag2 {
32                  start = foo(start.1, start.2.b);
33              } else {
34                  start = foo(start.2.a, start.1);
35              }
36  
37          }
38          return start;
39      }
40  }