package foo:foo; interface records { tuple-arg: func(x: tuple); tuple-result: func() -> tuple; // NB: this record used to be empty, but that's no longer valid, so now it's // non-empty. Don't want to delete the whole test however. record empty { not-empty-anymore: bool, } empty-arg: func(x: empty); empty-result: func() -> empty; /// A record containing two scalar fields /// that both have the same type record scalars { /// The first field, named a a: u32, /// The second field, named b b: u32, } scalar-arg: func(x: scalars); scalar-result: func() -> scalars; /// A record that is really just flags /// All of the fields are bool record really-flags { a: bool, b: bool, c: bool, d: bool, e: bool, f: bool, g: bool, h: bool, i: bool, } flags-arg: func(x: really-flags); flags-result: func() -> really-flags; record aggregates { a: scalars, b: u32, c: empty, d: string, e: really-flags, } aggregate-arg: func(x: aggregates); aggregate-result: func() -> aggregates; type tuple-typedef = tuple; type int-typedef = s32; type tuple-typedef2 = tuple; typedef-inout: func(e: tuple-typedef2) -> s32; } world the-world { import records; export records; }