Fix polymorphic procedure generation with debug information

This commit is contained in:
gingerBill
2018-12-14 15:45:14 +00:00
parent 26f11f12ab
commit 57d4333ed3
3 changed files with 12 additions and 5 deletions

View File

@@ -265,7 +265,6 @@ bool find_or_generate_polymorphic_procedure(CheckerContext *c, Entity *base_enti
}
bool generate_type_again = nctx.no_polymorphic_errors;
auto *pt = &src->Proc;
@@ -293,8 +292,12 @@ bool find_or_generate_polymorphic_procedure(CheckerContext *c, Entity *base_enti
}
}
#if 0
bool generate_type_again = nctx.no_polymorphic_errors;
if (generate_type_again) {
#else
{
#endif
// LEAK TODO(bill): This is technically a memory leak as it has to generate the type twice
bool prev_no_polymorphic_errors = nctx.no_polymorphic_errors;
defer (nctx.no_polymorphic_errors = prev_no_polymorphic_errors);
@@ -5004,7 +5007,11 @@ CallArgumentError check_polymorphic_record_type(CheckerContext *c, Operand *oper
}
} else {
i64 s = 0;
if (!check_is_assignable_to_with_score(c, o, e->type, &s)) {
if (is_type_generic(o->type)) {
// Polymorphic name!
score += assign_score_function(0);
continue;
} else if (!check_is_assignable_to_with_score(c, o, e->type, &s)) {
if (show_error) {
check_assignment(c, o, e->type, str_lit("polymorphic type argument"));
}