This commit is contained in:
Бондарев Иван 2020-03-01 13:45:55 +01:00
parent b11bb61129
commit ecdf35ab53
3 changed files with 43 additions and 4 deletions

View file

@ -0,0 +1,13 @@
type
t1 = class
procedure p1<T,U>(x: T; y: U); virtual := exit;
end;
t2 = class(t1)
procedure p1<TT,UU>(x: UU; y: TT); override;
begin
end;
end;
begin
end.

26
TestSuite/generics34.pas Normal file
View file

@ -0,0 +1,26 @@
type
t1 = class
i: integer;
procedure p1<T>(x: T); virtual := exit;
function f<T>: T; virtual := default(T);
end;
t2 = class(t1)
procedure p1<TT>(x: TT); override;
begin
i := 1;
end;
function f<T1>: T1; override;
begin
Result := default(T1);
i := 2;
end;
end;
begin
var o: t1 := new t2;
o.p1&<integer>(2);
assert(o.i = 1);
assert(o.f&<integer> = 0);
assert(o.i = 2);
end.

View file

@ -1549,8 +1549,8 @@ namespace PascalABCCompiler.TreeConverter
{
if (left.return_value_type != null && right.return_value_type != null && left.return_value_type.is_generic_parameter && right.return_value_type.is_generic_parameter)
{
if (string.Compare(left.return_value_type.name, right.return_value_type.name, true) != 0)
return false;
//if (string.Compare(left.return_value_type.name, right.return_value_type.name, true) != 0)
// return false;
return eq_type_nodes(left.return_value_type, right.return_value_type, false);
}
@ -1575,13 +1575,13 @@ namespace PascalABCCompiler.TreeConverter
{
return false;
}
for (int i = 0; i < left_type_params.Count; i++)
/*for (int i = 0; i < left_type_params.Count; i++)
{
if (string.Compare(left_type_params[i].name, right_type_params[i].name, true) != 0)
{
return false;
}
}
}*/
return true;
}