From 1481015dc4fdfc557aab6c21fe80278006161ae4 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 5 Aug 2023 15:01:21 +0100 Subject: Fix #2690 --- src/check_expr.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/check_expr.cpp') diff --git a/src/check_expr.cpp b/src/check_expr.cpp index b9419bf9e..5b6e8be3d 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -5478,6 +5478,8 @@ gb_internal CallArgumentError check_call_arguments_internal(CheckerContext *c, A auto variadic_operands = slice(slice_from_array(positional_operands), positional_operand_count, positional_operands.count); + bool named_variadic_param = false; + if (named_operands.count != 0) { GB_ASSERT(ce->split_args->named.count == named_operands.count); for_array(i, ce->split_args->named) { @@ -5503,6 +5505,9 @@ gb_internal CallArgumentError check_call_arguments_internal(CheckerContext *c, A err = CallArgumentError_ParameterNotFound; continue; } + if (pt->variadic && param_index == pt->variadic_index) { + named_variadic_param = true; + } if (visited[param_index]) { if (show_error) { error(arg, "Duplicate parameter '%.*s' in procedure call", LIT(name)); @@ -5704,11 +5709,6 @@ gb_internal CallArgumentError check_call_arguments_internal(CheckerContext *c, A } continue; } - - if (param_is_variadic) { - continue; - } - score += eval_param_and_score(c, o, e->type, err, param_is_variadic, e, show_error); } } -- cgit v1.2.3