Browse Source

Fix procedure overloading distinguishing

Ginger Bill 8 years ago
parent
commit
98dbbf11f3
2 changed files with 8 additions and 7 deletions
  1. 5 4
      src/checker.c
  2. 3 3
      src/types.c

+ 5 - 4
src/checker.c

@@ -1360,10 +1360,10 @@ void check_procedure_overloading(Checker *c, Entity *e) {
 				error(p->token, "Overloaded procedure `%.*s` as the same type as another procedure in this scope", LIT(name));
 				error(p->token, "Overloaded procedure `%.*s` as the same type as another procedure in this scope", LIT(name));
 				is_invalid = true;
 				is_invalid = true;
 				break;
 				break;
-			case ProcOverload_CallingConvention:
-				error(p->token, "Overloaded procedure `%.*s` as the same type as another procedure in this scope", LIT(name));
-				is_invalid = true;
-				break;
+			// case ProcOverload_CallingConvention:
+				// error(p->token, "Overloaded procedure `%.*s` as the same type as another procedure in this scope", LIT(name));
+				// is_invalid = true;
+				// break;
 			case ProcOverload_ParamVariadic:
 			case ProcOverload_ParamVariadic:
 				error(p->token, "Overloaded procedure `%.*s` as the same type as another procedure in this scope", LIT(name));
 				error(p->token, "Overloaded procedure `%.*s` as the same type as another procedure in this scope", LIT(name));
 				is_invalid = true;
 				is_invalid = true;
@@ -1377,6 +1377,7 @@ void check_procedure_overloading(Checker *c, Entity *e) {
 			case ProcOverload_ParamTypes:
 			case ProcOverload_ParamTypes:
 				// This is okay :)
 				// This is okay :)
 				break;
 				break;
+
 			}
 			}
 
 
 			if (is_invalid) {
 			if (is_invalid) {

+ 3 - 3
src/types.c

@@ -1173,9 +1173,9 @@ ProcTypeOverloadKind are_proc_types_overload_safe(Type *x, Type *y) {
 	TypeProc px = base_type(x)->Proc;
 	TypeProc px = base_type(x)->Proc;
 	TypeProc py = base_type(y)->Proc;
 	TypeProc py = base_type(y)->Proc;
 
 
-	if (px.calling_convention != py.calling_convention) {
-		return ProcOverload_CallingConvention;
-	}
+	// if (px.calling_convention != py.calling_convention) {
+		// return ProcOverload_CallingConvention;
+	// }
 
 
 	if (px.param_count != py.param_count) {
 	if (px.param_count != py.param_count) {
 		return ProcOverload_ParamCount;
 		return ProcOverload_ParamCount;