Path: blob/main/crates/component-macro/tests/codegen/variants.wit
1692 views
package foo:foo; interface variants { enum e1 { a, } e1-arg: func(x: e1); e1-result: func() -> e1; record empty {} variant v1 { a, c(e1), d(string), e(empty), f, g(u32), } v1-arg: func(x: v1); v1-result: func() -> v1; bool-arg: func(x: bool); bool-result: func() -> bool; option-arg: func( a: option<bool>, b: option<tuple<>>, c: option<u32>, d: option<e1>, e: option<f32>, g: option<option<bool>>, ); option-result: func() -> tuple< option<bool>, option<tuple<>>, option<u32>, option<e1>, option<f32>, option<option<bool>>, >; variant casts1 { a(s32), b(f32), } variant casts2 { a(f64), b(f32), } variant casts3 { a(f64), b(u64), } variant casts4 { a(u32), b(s64), } variant casts5 { a(f32), b(s64), } variant casts6 { a(tuple<f32, u32>), b(tuple<u32, u32>), } casts: func( a: casts1, b: casts2, c: casts3, d: casts4, e: casts5, f: casts6, ) -> tuple< casts1, casts2, casts3, casts4, casts5, casts6, >; result-arg: func( a: result, b: result<_, e1>, c: result<e1>, d: result<tuple<>, tuple<>>, e: result<u32, v1>, f: result<string, list<u8>>, ); result-result: func() -> tuple< result, result<_, e1>, result<e1>, result<tuple<>, tuple<>>, result<u32, v1>, result<string, list<u8>>, >; enum my-errno { bad1, bad2, } return-result-sugar: func() -> result<s32, my-errno>; return-result-sugar2: func() -> result<_, my-errno>; return-result-sugar3: func() -> result<my-errno, my-errno>; return-result-sugar4: func() -> result<tuple<s32, u32>, my-errno>; return-option-sugar: func() -> option<s32>; return-option-sugar2: func() -> option<my-errno>; result-simple: func() -> result<u32, s32>; record is-clone { v1: v1, } is-clone-arg: func(a: is-clone); is-clone-return: func() -> is-clone; } world my-world { import variants; export variants; }