non_async_after_complex_async.adl
1 program inner.alpha { 2 mapping foo: u32 => u32; 3 4 async transition inner(a: u32) -> Future { 5 return finalize(a); 6 } 7 8 async function finalize(a: u32) { 9 Mapping::set(foo, 0u32, a); 10 } 11 } 12 13 // --- Next Program --- // 14 15 import inner.alpha; 16 program mid.alpha { 17 async transition mid(a: u32) -> Future { 18 let f1: Future = inner.alpha/inner(0u32); 19 let f2: Future = inner.alpha/inner(1u32); 20 let f:Future = finalize(f2, f1); 21 return f; 22 } 23 24 async function finalize(f1: Future, f2: Future) { 25 f1.await(); 26 f2.await(); 27 } 28 29 transition dummy() {} 30 } 31 32 // --- Next Program --- // 33 34 import inner.alpha; 35 import mid.alpha; 36 program outer.alpha { 37 async transition outer(a: u32) -> Future { 38 let f1: Future = mid.alpha/mid(0u32); 39 let f2: Future = mid.alpha/mid(1u32); 40 // Allow this call to remain for now. 41 mid.alpha/dummy(); 42 let f:Future = finalize(f1, f2); 43 return f; 44 } 45 46 async function finalize(f1: Future, f2: Future) { 47 f1.await(); 48 f2.await(); 49 } 50 }