diff --git a/vlib/v/checker/struct.v b/vlib/v/checker/struct.v index d1ca514c0e2cfb..4c12e7816d6e54 100644 --- a/vlib/v/checker/struct.v +++ b/vlib/v/checker/struct.v @@ -350,6 +350,8 @@ fn (mut c Checker) struct_decl(mut node ast.StructDecl) { } } } + } else { + c.error('`${t_sym.name}` is not an interface type', t.pos) } c.type_implements(struct_type, t.typ, node.pos) } diff --git a/vlib/v/checker/tests/struct_implements_non_interface_err.out b/vlib/v/checker/tests/struct_implements_non_interface_err.out new file mode 100644 index 00000000000000..d0f5f88c590120 --- /dev/null +++ b/vlib/v/checker/tests/struct_implements_non_interface_err.out @@ -0,0 +1,5 @@ +vlib/v/checker/tests/struct_implements_non_interface_err.vv:1:26: error: `Abcde` is not an interface type + 1 | struct Walker implements Abcde { + | ~~~~~ + 2 | aaa string + 3 | } diff --git a/vlib/v/checker/tests/struct_implements_non_interface_err.vv b/vlib/v/checker/tests/struct_implements_non_interface_err.vv new file mode 100644 index 00000000000000..55d570d5e56608 --- /dev/null +++ b/vlib/v/checker/tests/struct_implements_non_interface_err.vv @@ -0,0 +1,5 @@ +struct Walker implements Abcde { + aaa string +} + +fn main() {}