diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index bc35568857..43f03dd88c 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -2300,10 +2300,8 @@ pub fn (mut c Checker) array_init(mut array_init ast.ArrayInit) table.Type { c.expected_type = elem_type continue } - if !c.check_types(typ, elem_type) { - elem_type_sym := c.table.get_type_symbol(elem_type) - c.error('expected array element with type `$elem_type_sym.source_name`', - array_init.pos) + c.check_expected(typ, elem_type) or { + c.error('invalid array element: $err', expr.position()) } } if expecting_interface_array { diff --git a/vlib/v/checker/tests/array_element_type.out b/vlib/v/checker/tests/array_element_type.out new file mode 100644 index 0000000000..71a50e2253 --- /dev/null +++ b/vlib/v/checker/tests/array_element_type.out @@ -0,0 +1,12 @@ +vlib/v/checker/tests/array_element_type.vv:2:8: error: unknown type `abc` + 1 | fn main() { + 2 | _ = []abc{} + | ~~~ + 3 | _ = [2, ''] + 4 | } +vlib/v/checker/tests/array_element_type.vv:3:10: error: invalid array element: expected `int`, not `string` + 1 | fn main() { + 2 | _ = []abc{} + 3 | _ = [2, ''] + | ~~ + 4 | } diff --git a/vlib/v/checker/tests/array_element_type.vv b/vlib/v/checker/tests/array_element_type.vv new file mode 100644 index 0000000000..95fd2757bf --- /dev/null +++ b/vlib/v/checker/tests/array_element_type.vv @@ -0,0 +1,4 @@ +fn main() { + _ = []abc{} + _ = [2, ''] +} diff --git a/vlib/v/checker/tests/unknown_array_element_type_a.out b/vlib/v/checker/tests/unknown_array_element_type_a.out deleted file mode 100644 index 41ea9981ae..0000000000 --- a/vlib/v/checker/tests/unknown_array_element_type_a.out +++ /dev/null @@ -1,6 +0,0 @@ -vlib/v/checker/tests/unknown_array_element_type_a.vv:2:9: error: unknown type `abc` - 1 | fn main() { - 2 | a := []abc{} - | ~~~ - 3 | println(a) - 4 | } diff --git a/vlib/v/checker/tests/unknown_array_element_type_a.vv b/vlib/v/checker/tests/unknown_array_element_type_a.vv deleted file mode 100644 index 96cd728e55..0000000000 --- a/vlib/v/checker/tests/unknown_array_element_type_a.vv +++ /dev/null @@ -1,4 +0,0 @@ -fn main() { - a := []abc{} - println(a) -}