bug fix #2218
This commit is contained in:
parent
735e051a87
commit
e82be647b2
28
TestSuite/generics39.pas
Normal file
28
TestSuite/generics39.pas
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
type
|
||||
t0<T> = class end;
|
||||
|
||||
t1 = class
|
||||
|
||||
function f1<T>: array of T; virtual := nil;
|
||||
function f2<T>: t0<T>; virtual := nil;
|
||||
function f3<T>: ^T; virtual := nil;
|
||||
function f4<T1,T2>(a: T1; b: T2): (T1,T2); virtual := nil;
|
||||
end;
|
||||
|
||||
t2 = class(t1)
|
||||
function f1<T>: array of T; override := new T[2];
|
||||
function f2<T>: t0<T>; override := new t0<T>;
|
||||
function f3<T>: ^T; override := nil;
|
||||
function f4<T2,T1>(a: T2; b: T1): (T2,T1); override := (a,b);
|
||||
end;
|
||||
|
||||
begin
|
||||
var o: t1 := new t2;
|
||||
var a := o.f1&<integer>;
|
||||
assert(a.Length = 2);
|
||||
var o2 := o.f2&<integer>;
|
||||
assert(o2 <> nil);
|
||||
var o3 := o.f4&<integer,string>(2,'a');
|
||||
assert(o3.Item1 = 2);
|
||||
assert(o3.Item2 = 'a');
|
||||
end.
|
||||
|
|
@ -1443,6 +1443,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
{
|
||||
if (strong && tn1.generic_function_container != tn2.generic_function_container)
|
||||
{
|
||||
if (tn1.is_generic_parameter && tn2.is_generic_parameter)
|
||||
return tn1.generic_param_index == tn2.generic_param_index;
|
||||
return false;
|
||||
}
|
||||
return (tn1.generic_param_index == tn2.generic_param_index);
|
||||
|
|
|
|||
Loading…
Reference in a new issue