Browse Source

Fix `signature_parameter_similar_enough` logic

gingerBill 5 years ago
parent
commit
7bdd8094d6
1 changed files with 4 additions and 7 deletions
  1. 4 7
      src/check_decl.cpp

+ 4 - 7
src/check_decl.cpp

@@ -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;