/ tests / tests / compiler / futures / simple.adl
simple.adl
 1  program test.alpha {
 2      mapping foo: u32 => u32;
 3      async transition main_inner(public a: u32, b: u32) -> (u32, Future) {
 4          let c: u32 = a + b;
 5          let f: Future = finalize();
 6          return (c, f);
 7      }
 8  
 9      async function finalize() {
10          Mapping::set(foo, 1u32, 1u32);
11      }
12  }
13  
14  // --- Next Program --- //
15  
16  import test.alpha;
17  program basic.alpha {
18      async transition main(public a: u32, b: u32) -> (u32, Future) {
19          let c: u32 = a + b;
20          let (d, f1): (u32, Future) = test.alpha/main_inner(1u32, 1u32);
21          let f:Future = finalize(c, f1);
22          return (c,f);
23      }
24  
25      async function finalize(input: u32, f: Future) {
26          f.await();
27          assert_eq(input, 1u32);
28      }
29  }