diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 41b5df135..9629a3e34 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -4249,7 +4249,19 @@ CallArgumentData check_call_arguments(CheckerContext *c, Operand *operand, Type } else { operands = array_make(heap_allocator(), 0, 2*ce->args.count); - check_unpack_arguments(c, nullptr, -1, &operands, ce->args, false); + Entity **lhs = nullptr; + isize lhs_count = -1; + if (proc_type != nullptr && is_type_proc(proc_type)) { + TypeProc *pt = &base_type(proc_type)->Proc; + if (!pt->is_polymorphic || pt->is_poly_specialized) { + if (pt->params != nullptr) { + lhs = pt->params->Tuple.variables.data; + lhs_count = pt->params->Tuple.variables.count; + } + } + } + + check_unpack_arguments(c, lhs, lhs_count, &operands, ce->args, false); } if (operand->mode == Addressing_ProcGroup) {