From afc710e024fa2e36a0c91f9b623f29f6200e6a77 Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Thu, 7 Aug 2025 00:32:52 -0300 Subject: [PATCH] markused: fix array append c code dependency (fix #25057) (#25058) --- vlib/v/markused/walker.v | 8 +++++--- vlib/v/tests/runes_test.v | 7 +++++++ 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 vlib/v/tests/runes_test.v diff --git a/vlib/v/markused/walker.v b/vlib/v/markused/walker.v index 0debfd7f0..62f1f2670 100644 --- a/vlib/v/markused/walker.v +++ b/vlib/v/markused/walker.v @@ -633,6 +633,11 @@ fn (mut w Walker) expr(node_ ast.Expr) { w.fn_decl(mut &ast.FnDecl(opmethod.source_fn)) } } + } else { + if !w.uses_append && node.op == .left_shift && (sym.kind == .array + || (sym.kind == .alias && w.table.final_sym(node.left_type).kind == .array)) { + w.uses_append = true + } } } right_type := if node.right_type == 0 && mut node.right is ast.TypeNode { @@ -658,9 +663,6 @@ fn (mut w Walker) expr(node_ ast.Expr) { if !w.uses_eq && node.op in [.eq, .ne] { w.uses_eq = true } - if !w.uses_append && node.op == .left_shift && !w.is_direct_array_access { - w.uses_append = true - } } ast.IfGuardExpr { w.expr(node.expr) diff --git a/vlib/v/tests/runes_test.v b/vlib/v/tests/runes_test.v new file mode 100644 index 000000000..fcf5e7891 --- /dev/null +++ b/vlib/v/tests/runes_test.v @@ -0,0 +1,7 @@ +module main + +fn test_main() { + s := 'hello' + arr := s.runes() + assert arr.len == 5 +} -- 2.39.5