fix #2107
This commit is contained in:
parent
dea6658268
commit
f3ee283ea8
28
TestSuite/generics43.pas
Normal file
28
TestSuite/generics43.pas
Normal 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.
|
||||
|
|
@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue