aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2018-12-14 15:05:26 +0000
committergingerBill <bill@gingerbill.org>2018-12-14 15:05:26 +0000
commit26f11f12aba9176b567fac2bb809e1b821a4ef93 (patch)
treecab91410df7151127de288354d61be29045548a6 /src/check_expr.cpp
parent0b6fc19fb0e48f30d0e506d6599ba61667d083f3 (diff)
Fix polymorphic type parameter argument count checking #298
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp12
1 files changed, 12 insertions, 0 deletions
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];