mirror of
https://github.com/vlang/v.git
synced 2025-09-18 20:07:02 -04:00
parent
880a9873a4
commit
df1ec9135a
@ -2522,8 +2522,10 @@ 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 && args[arg_nr].typ.has_flag(.variadic)
|
||||
&& args[arg_nr].typ == varg_type {
|
||||
if args.len == 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))) {
|
||||
g.ref_or_deref_arg(args[arg_nr], arr_info.elem_type, node.language,
|
||||
false)
|
||||
} else {
|
||||
|
24
vlib/v/tests/fns/call_args_variadic_sumtype_test.v
Normal file
24
vlib/v/tests/fns/call_args_variadic_sumtype_test.v
Normal file
@ -0,0 +1,24 @@
|
||||
type Animal = Dog | Cat
|
||||
|
||||
struct Dog {
|
||||
name string
|
||||
}
|
||||
|
||||
struct Cat {
|
||||
name string
|
||||
}
|
||||
|
||||
fn print_names(animals ...Animal) {
|
||||
for animal in animals {
|
||||
assert animal.name == 'Kitty'
|
||||
}
|
||||
}
|
||||
|
||||
fn test_main() {
|
||||
cat := Cat{
|
||||
name: 'Kitty'
|
||||
}
|
||||
mut animals := []Animal{}
|
||||
animals << cat
|
||||
print_names(animals)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user