This commit is contained in:
Ivan Bondarev 2020-12-29 20:24:58 +01:00
parent dea6658268
commit f3ee283ea8
2 changed files with 47 additions and 1 deletions

28
TestSuite/generics43.pas Normal file
View file

@ -0,0 +1,28 @@
var i: integer;
procedure p1<T>(a: array of T);
begin
i := 1;
end;
procedure p1<T>(a: T);
begin
i := 2;
end;
procedure p2<T>(a: array[,] of T);
begin
i := 1;
end;
procedure p2<T>(a: T);
begin
i := 2;
end;
begin
var a := new byte[5];
p1(a);
assert(i = 1);
i := 0;
p2(a);
assert(i = 2);
end.

View file

@ -2602,7 +2602,25 @@ namespace PascalABCCompiler.TreeConverter
}
}*/
}
}
List<function_node> to_remove = new List<function_node>();
foreach (function_node fn in funcs)
{
if (fn.is_generic_function_instance)
foreach (parameter p in fn.original_function.parameters)
{
if (p.type.is_generic_parameter)
{
to_remove.Add(fn);
break;
}
}
}
if (set_of_possible_functions.Count - to_remove.Count == 1)
{
foreach (function_node fn in to_remove)
set_of_possible_functions.Remove(fn);
return set_of_possible_functions[0];
}
}