diff --git a/vlib/v/tests/unions/union_implementing_interface_test.v b/vlib/v/tests/unions/union_implementing_interface_test.v new file mode 100644 index 0000000000..00134d4768 --- /dev/null +++ b/vlib/v/tests/unions/union_implementing_interface_test.v @@ -0,0 +1,20 @@ +interface Speaker { + speak() string +} + +union MyUnion implements Speaker { + vint int + vu32 u32 + vstring string +} + +fn (u MyUnion) speak() string { + return 'hi, u.vint: ${unsafe { u.vint }}' +} + +fn test_union_implementing_interface() { + s := Speaker(MyUnion{ + vint: 123 + }) + assert s.speak() == 'hi, u.vint: 123' +}