From 056998a42addfa243b44e1ebd2bb2e27d6bd5201 Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Sun, 1 Jun 2025 00:14:33 -0300 Subject: [PATCH] checker: fix checking for int to array of interface (fix #24624) (#24625) --- vlib/v/checker/checker.v | 4 ++-- vlib/v/tests/interfaces/interface_int_test.v | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 vlib/v/tests/interfaces/interface_int_test.v diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index 3aaf13f9b..6eb77b698 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -4694,8 +4694,8 @@ fn (mut c Checker) mark_as_referenced(mut node ast.Expr, as_interface bool) { return } type_sym := c.table.sym(obj.typ.set_nr_muls(0)) - if obj.is_stack_obj && !type_sym.is_heap() && !c.pref.translated - && !c.file.is_translated { + if obj.is_stack_obj && !type_sym.is_heap() && !type_sym.is_int() + && !c.pref.translated && !c.file.is_translated { suggestion := if type_sym.kind == .struct { 'declaring `${type_sym.name}` as `@[heap]`' } else { diff --git a/vlib/v/tests/interfaces/interface_int_test.v b/vlib/v/tests/interfaces/interface_int_test.v new file mode 100644 index 000000000..155adeccb --- /dev/null +++ b/vlib/v/tests/interfaces/interface_int_test.v @@ -0,0 +1,12 @@ +module main + +interface Value {} + +fn test_main() { + mut a := []string{len: 10} + mut v := []Value{} + for i := 0; i < a.len; i++ { + v << i + } + assert v[0] == Value(0) +} -- 2.39.5