Fix signature_parameter_similar_enough logic

This commit is contained in:
gingerBill
2020-06-30 19:10:24 +01:00
parent 323fc7a6a9
commit 7bdd8094d6

View File

@@ -519,24 +519,21 @@ bool sig_compare(TypeCheckSig *a, TypeCheckSig *b, Type *x, Type *y) {
}
bool signature_parameter_similar_enough(Type *x, Type *y) {
x = core_type(x);
y = core_type(y);
if (sig_compare(is_type_pointer, x, y)) {
return true;
}
if (sig_compare(is_type_integer, x, y)) {
GB_ASSERT(x->kind == Type_Basic);
GB_ASSERT(y->kind == Type_Basic);
GB_ASSERT(core_type(x)->kind == Type_Basic);
GB_ASSERT(core_type(y)->kind == Type_Basic);
i64 sx = type_size_of(x);
i64 sy = type_size_of(y);
if (sx == sy) return true;
}
if (sig_compare(is_type_integer, is_type_boolean, x, y)) {
GB_ASSERT(x->kind == Type_Basic);
GB_ASSERT(y->kind == Type_Basic);
GB_ASSERT(core_type(x)->kind == Type_Basic);
GB_ASSERT(core_type(y)->kind == Type_Basic);
i64 sx = type_size_of(x);
i64 sy = type_size_of(y);
if (sx == sy) return true;