package foo:types
interface types {
type t1 = u8
type t2 = u16
type t3 = u32
type t4 = u64
type t5 = s8
type t6 = s16
type t7 = s32
type t8 = s64
type t9 = float32
type t10 = float64
type t11 = char
type t12 = list<char>
type t13 = string
type t14 = option<u32>
type t15 = result<u32, u32>
type t16 = result<_, u32>
type t17 = result<u32>
type t18 = result
record t20 {}
record t21 { a: u32 }
record t22 { a: u32, }
record t23 { a: u32, b: u64 }
record t24 { a: u32, b: u64, }
record t25 { x: u32 }
record %record {}
type t26 = tuple<>
type t27 = tuple<u32>
type t28 = tuple<u32,>
type t29 = tuple<u32, u64>
flags t30 {}
flags t31 { a, b, c }
flags t32 { a, b, c, }
variant t33 { a }
variant t34 { a, b }
variant t35 { a, b, }
variant t36 { a, b(u32), }
variant t37 { a, b(option<u32>), }
union t38 { u32, u64 }
union t39 { u32, option<u32> }
union t40 { u32, option<u32>, }
enum t41 { a, b, c }
enum t42 { a, b, c, }
type t43 = bool
type t44 = string
type t45 = list<list<list<t32>>>
type t46 = t44
type t47 = %t44
type t48 = stream<u32, u32>
type t49 = stream<_, u32>
type t50 = stream<u32>
type t51 = stream
type t52 = future<u32>
type t53 = future
// type order doesn't matter
type foo = bar
type bar = u32
}