This commit is contained in:
Ivan Bondarev 2022-04-10 10:40:44 +02:00
parent 5313362403
commit dd2306239a
2 changed files with 19 additions and 3 deletions

View file

@ -8964,14 +8964,23 @@ namespace PascalABCCompiler.NETGenerator
t1 = helper.GetTypeReference(real_parameters[0].type).tp;
if (real_parameters[1].type is ICompiledGenericTypeInstance)
t2 = helper.GetTypeReference(real_parameters[1].type).tp;
MethodInfo mi = ctn1.compiled_type.GetMethod("Equals");
MemberInfo[] eq_members = ctn1.compiled_type.GetMember("Equals", BindingFlags.Public | BindingFlags.Instance);
MethodInfo mi = null;
foreach (MemberInfo member in eq_members)
if (member is MethodInfo)
{
mi = member as MethodInfo;
break;
}
if (mi != null)
{
real_parameters[0].visit(this);
il.Emit(OpCodes.Box, t1);
var lb = il.DeclareLocal(t1);
il.Emit(OpCodes.Stloc, lb);
il.Emit(OpCodes.Ldloca, lb);
real_parameters[1].visit(this);
il.Emit(OpCodes.Box, t2);
il.Emit(OpCodes.Callvirt, mi);
il.Emit(OpCodes.Call, mi);
if (ft == basic_function_type.objnoteq)
{
il.Emit(OpCodes.Ldc_I4_0);

7
TestSuite/generics63.pas Normal file
View file

@ -0,0 +1,7 @@
uses System;
begin
var t1 := new ValueTuple<integer>(1);
var t2 := new ValueTuple<integer>(1);
assert(t1 = t2);
end.