/ tests / tests / compiler / structs / external_record.adl
external_record.adl
 1  
 2  program child.alpha {
 3      record A {
 4          owner: address,
 5          val: u32,
 6      }
 7      transition mint(owner: address, val: u32) -> A {
 8          return A {owner: owner, val: val};
 9      }
10  }
11  
12  // --- Next Program --- //
13  
14  import child.alpha;
15  program parent.alpha {
16      record B {
17          owner: address,
18          val: u32,
19      }
20      transition wrapper_mint(owner: address, val: u32) ->  (child.alpha/A, B) {
21          return (child.alpha/mint(self.caller, 1u32), B {owner: self.signer, val: val});
22      }
23  }
24  
25  // --- Next Program --- //
26  
27  import child.alpha;
28  import parent.alpha;
29  program grandparent.alpha {
30      record C {
31          owner: address,
32          val: u32,
33      }
34      transition double_wrapper_mint(owner: address, val: u32) -> (child.alpha/A, parent.alpha/B, C) {
35          let (a,b): (child.alpha/A, parent.alpha/B) = parent.alpha/wrapper_mint(owner,val);
36          return (a, b, C {owner: owner, val: val});
37      }
38  }