From 26f11f12aba9176b567fac2bb809e1b821a4ef93 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 14 Dec 2018 15:05:26 +0000 Subject: [PATCH] Fix polymorphic type parameter argument count checking #298 --- src/check_expr.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 837505dff..cb7be9b74 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -4970,6 +4970,18 @@ CallArgumentError check_polymorphic_record_type(CheckerContext *c, Operand *oper return err; } + if (param_count < ordered_operands.count) { + error(call, "Too many polymorphic type arguments, expected %td, got %td", param_count, ordered_operands.count); + err = CallArgumentError_TooManyArguments; + } else if (param_count > ordered_operands.count) { + error(call, "Too few polymorphic type arguments, expected %td, got %td", param_count, ordered_operands.count); + err = CallArgumentError_TooFewArguments; + } + + if (err != 0) { + return err; + } + i64 score = 0; for (isize i = 0; i < param_count; i++) { Operand *o = &ordered_operands[i];