diff --git a/vlib/v/checker/containers.v b/vlib/v/checker/containers.v index 9a62c711b0..17bfa99aab 100644 --- a/vlib/v/checker/containers.v +++ b/vlib/v/checker/containers.v @@ -85,6 +85,9 @@ pub fn (mut c Checker) array_init(mut node ast.ArrayInit) ast.Type { // } for i, mut expr in node.exprs { typ := c.check_expr_opt_call(expr, c.expr(expr)) + if typ == ast.void_type { + c.error('invalid void array element type', expr.position()) + } node.expr_types << typ // The first element's type if expecting_interface_array { diff --git a/vlib/v/checker/tests/array_init_with_void_value_err.out b/vlib/v/checker/tests/array_init_with_void_value_err.out new file mode 100644 index 0000000000..25650959a2 --- /dev/null +++ b/vlib/v/checker/tests/array_init_with_void_value_err.out @@ -0,0 +1,7 @@ +vlib/v/checker/tests/array_init_with_void_value_err.vv:4:8: error: invalid void array element type + 2 | + 3 | fn main() { + 4 | a := [yo()] + | ~~~~ + 5 | println(a) + 6 | } diff --git a/vlib/v/checker/tests/array_init_with_void_value_err.vv b/vlib/v/checker/tests/array_init_with_void_value_err.vv new file mode 100644 index 0000000000..5f79e9fc3a --- /dev/null +++ b/vlib/v/checker/tests/array_init_with_void_value_err.vv @@ -0,0 +1,8 @@ +module main + +fn main() { + a := [yo()] + println(a) +} + +fn yo() {}