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