From b052af81c3969f173facffd5174177c4628ac187 Mon Sep 17 00:00:00 2001 From: CreeperFace <165158232+dy-tea@users.noreply.github.com> Date: Thu, 27 Nov 2025 03:25:06 +0000 Subject: [PATCH] cgen: use variadic_count == 1 when passing variadic to call of same array type (fix #25827) (#25837) --- vlib/v/gen/c/fn.v | 2 +- vlib/v/tests/fns/variadic_fn_chain_test.v | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 vlib/v/tests/fns/variadic_fn_chain_test.v diff --git a/vlib/v/gen/c/fn.v b/vlib/v/gen/c/fn.v index 36962adb7..4af8d0a91 100644 --- a/vlib/v/gen/c/fn.v +++ b/vlib/v/gen/c/fn.v @@ -2612,7 +2612,7 @@ fn (mut g Gen) call_args(node ast.CallExpr) { } } else { // passing variadic arg to another call which expects same array type - if args.len == 1 + if variadic_count == 1 && ((args[arg_nr].typ.has_flag(.variadic) && args[arg_nr].typ == varg_type) || (varg_type.has_flag(.variadic) && args[arg_nr].typ == varg_type.clear_flag(.variadic))) { diff --git a/vlib/v/tests/fns/variadic_fn_chain_test.v b/vlib/v/tests/fns/variadic_fn_chain_test.v new file mode 100644 index 000000000..a71c345eb --- /dev/null +++ b/vlib/v/tests/fns/variadic_fn_chain_test.v @@ -0,0 +1,9 @@ +fn called(s string, l ...string) {} + +fn caller(s string, l ...string) { + called(s, l) +} + +fn test_main() { + caller('') +} -- 2.39.5