1package foo:foo; 2 3interface lists { 4 list-u8-param: func(x: list<u8>); 5 list-u16-param: func(x: list<u16>); 6 list-u32-param: func(x: list<u32>); 7 list-u64-param: func(x: list<u64>); 8 list-s8-param: func(x: list<s8>); 9 list-s16-param: func(x: list<s16>); 10 list-s32-param: func(x: list<s32>); 11 list-s64-param: func(x: list<s64>); 12 list-f32-param: func(x: list<f32>); 13 list-f64-param: func(x: list<f64>); 14 15 list-u8-ret: func() -> list<u8>; 16 list-u16-ret: func() -> list<u16>; 17 list-u32-ret: func() -> list<u32>; 18 list-u64-ret: func() -> list<u64>; 19 list-s8-ret: func() -> list<s8>; 20 list-s16-ret: func() -> list<s16>; 21 list-s32-ret: func() -> list<s32>; 22 list-s64-ret: func() -> list<s64>; 23 list-f32-ret: func() -> list<f32>; 24 list-f64-ret: func() -> list<f64>; 25 26 tuple-list: func(x: list<tuple<u8, s8>>) -> list<tuple<s64, u32>>; 27 string-list-arg: func(a: list<string>); 28 string-list-ret: func() -> list<string>; 29 tuple-string-list: func(x: list<tuple<u8, string>>) -> list<tuple<string, u8>>; 30 string-list: func(x: list<string>) -> list<string>; 31 32 record some-record { 33 x: string, 34 y: other-record, 35 z: list<other-record>, 36 c1: u32, 37 c2: u64, 38 c3: s32, 39 c4: s64, 40 } 41 record other-record { 42 a1: u32, 43 a2: u64, 44 a3: s32, 45 a4: s64, 46 b: string, 47 c: list<u8>, 48 } 49 record-list: func(x: list<some-record>) -> list<other-record>; 50 record-list-reverse: func(x: list<other-record>) -> list<some-record>; 51 52 variant some-variant { 53 a(string), 54 b, 55 c(u32), 56 d(list<other-variant>), 57 } 58 variant other-variant { 59 a, 60 b(u32), 61 c(string), 62 } 63 variant-list: func(x: list<some-variant>) -> list<other-variant>; 64 65 type load-store-all-sizes = list<tuple< 66 string, 67 u8, 68 s8, 69 u16, 70 s16, 71 u32, 72 s32, 73 u64, 74 s64, 75 f32, 76 f64, 77 char, 78 >>; 79 load-store-everything: func(a: load-store-all-sizes) -> load-store-all-sizes; 80} 81 82world the-lists { 83 import lists; 84 export lists; 85} 86