Fix stack overflow bug caused by polymorphic record with polymorphic constant parameters. #447

DOES NOT FIX THE UNDERLYING BUG
This commit is contained in:
gingerBill
2019-10-31 22:39:12 +00:00
parent 01dfb1dac8
commit 560bdc339b
2 changed files with 15 additions and 11 deletions
+11 -7
View File
@@ -262,25 +262,29 @@ Entity *find_polymorphic_record_entity(CheckerContext *ctx, Type *original_type,
for (isize j = 0; j < param_count; j++) {
Entity *p = tuple->variables[j];
Operand o = ordered_operands[j];
Entity *oe = entity_of_node(o.expr);
if (p == oe) {
// NOTE(bill): This is the same type, make sure that it will be be same thing and use that
// Saves on a lot of checking too below
continue;
}
if (p->kind == Entity_TypeName) {
if (is_type_polymorphic(o.type)) {
// NOTE(bill): Do not add polymorphic version to the gen_types
skip = true;
break;
} else if (!are_types_identical(o.type, p->type)) {
}
if (!are_types_identical(o.type, p->type)) {
skip = true;
break;
}
} else if (p->kind == Entity_Constant) {
if (o.mode != Addressing_Constant) {
if (failure) *failure = true;
skip = true;
break;
}
if (!compare_exact_values(Token_CmpEq, o.value, p->Constant.value)) {
skip = true;
break;
} else if (!are_types_identical(o.type, p->type)) {
}
if (!are_types_identical(o.type, p->type)) {
skip = true;
break;
}