This commit is contained in:
Felipe Pena 2025-08-27 20:58:48 -03:00
parent 1663c9804c
commit 0a262a286e
3 changed files with 9 additions and 15 deletions

View file

@ -1684,16 +1684,15 @@ fn (mut c Checker) fn_call(mut node ast.CallExpr, mut continue_check &bool) ast.
} }
} }
out: for n in 0 .. arg_typ_sym.info.types.len { out: for n in 0 .. arg_typ_sym.info.types.len {
num_arg := n + 1
curr_arg := arg_typs[n] curr_arg := arg_typs[n]
multi_param := if func.is_variadic && i >= func.params.len - 1 { multi_param := if func.is_variadic && i >= func.params.len - 1 {
func.params.last() func.params.last()
} else { } else {
func.params[i + n] func.params[n + i]
} }
c.check_expected_call_arg(curr_arg, c.unwrap_generic(multi_param.typ), c.check_expected_call_arg(curr_arg, c.unwrap_generic(multi_param.typ),
node.language, call_arg) or { node.language, call_arg) or {
c.error('${err.msg()} in argument ${i + num_arg} to `${fn_name}` from ${c.table.type_to_str(arg_typ)}', c.error('${err.msg()} in argument ${i + n + 1} to `${fn_name}` from ${c.table.type_to_str(arg_typ)}',
call_arg.pos) call_arg.pos)
continue out continue out
} }

View file

@ -1,20 +1,15 @@
vlib/v/checker/tests/multi_return_arg_missing_err.vv:9:14: error: unknown function: ret_2 vlib/v/checker/tests/multi_return_arg_missing_err.vv:9:14: error: expected 2 arguments, but got 3
7 | 7 |
8 | fn main() { 8 | fn main() {
9 | expect_2(1, ret_2()) 9 | expect_2(1, returning_2())
| ~~~~~~~ | ~~~~~~~~~~~~~
10 | expect_2(returning_2(), 1)
11 | }
vlib/v/checker/tests/multi_return_arg_missing_err.vv:9:14: error: `ret_2()` (no value) used as value in argument 2 to `expect_2`
7 |
8 | fn main() {
9 | expect_2(1, ret_2())
| ~~~~~~~
10 | expect_2(returning_2(), 1) 10 | expect_2(returning_2(), 1)
11 | } 11 | }
Details: have (int literal, (int, int))
want (int, int)
vlib/v/checker/tests/multi_return_arg_missing_err.vv:10:26: error: expected 2 arguments, but got 3 vlib/v/checker/tests/multi_return_arg_missing_err.vv:10:26: error: expected 2 arguments, but got 3
8 | fn main() { 8 | fn main() {
9 | expect_2(1, ret_2()) 9 | expect_2(1, returning_2())
10 | expect_2(returning_2(), 1) 10 | expect_2(returning_2(), 1)
| ^ | ^
11 | } 11 | }

View file

@ -6,6 +6,6 @@ fn returning_2() (int, int) {
} }
fn main() { fn main() {
expect_2(1, ret_2()) expect_2(1, returning_2())
expect_2(returning_2(), 1) expect_2(returning_2(), 1)
} }