This commit is contained in:
parent
8329da7aed
commit
3932a53f77
|
|
@ -841,7 +841,6 @@ namespace PascalABCCompiler.PCU
|
|||
MethodInfo mi = mis[i] as MethodInfo;
|
||||
if (mi == null) continue;
|
||||
ParameterInfo[] prms = mi.GetParameters();
|
||||
|
||||
bool eq = true;
|
||||
if (prms.Length != param_types.Length) continue;
|
||||
for (int j=0; j<prms.Length; j++)
|
||||
|
|
@ -853,10 +852,17 @@ namespace PascalABCCompiler.PCU
|
|||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (prms[j].ParameterType.Name != param_types[j].name)
|
||||
{
|
||||
eq = false; break;
|
||||
}
|
||||
if (prms[j].ParameterType.IsGenericType && !prms[j].ParameterType.GetGenericArguments()[0].IsGenericParameter)
|
||||
{
|
||||
eq = false; break;
|
||||
}
|
||||
}
|
||||
|
||||
if (eq && mi.DeclaringType == t) res_mi = mi;
|
||||
}
|
||||
return res_mi;
|
||||
|
|
|
|||
6
TestSuite/units/u_generics10.pas
Normal file
6
TestSuite/units/u_generics10.pas
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
unit u_generics10;
|
||||
|
||||
begin
|
||||
var d := Dict(KV(1,2),KV(3,4));
|
||||
assert(d[3] = 4);
|
||||
end.
|
||||
12
TestSuite/units/u_generics5.pas
Normal file
12
TestSuite/units/u_generics5.pas
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
unit u_generics5;
|
||||
|
||||
function f: byte;
|
||||
begin
|
||||
|
||||
var f: ()->byte := ()->byte(2);
|
||||
var t := System.Threading.Tasks.Task&<byte>.Run(f);
|
||||
t.Wait;
|
||||
Result := t.Result;
|
||||
end;
|
||||
|
||||
end.
|
||||
17
TestSuite/units/u_generics6.pas
Normal file
17
TestSuite/units/u_generics6.pas
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
unit u_generics6;
|
||||
|
||||
var i: integer;
|
||||
type
|
||||
r1 = record(System.ICloneable)
|
||||
public function Clone: object;
|
||||
begin
|
||||
i := 1;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure p1<T>(a: T); where T: System.ICloneable;
|
||||
begin
|
||||
System.ICloneable(a).Clone;
|
||||
end;
|
||||
|
||||
end.
|
||||
15
TestSuite/units/u_generics7.pas
Normal file
15
TestSuite/units/u_generics7.pas
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
unit u_generics7;
|
||||
|
||||
procedure test;
|
||||
begin
|
||||
var s: sequence of integer := Arr(3,2,1).AsEnumerable();
|
||||
var e: IEnumerator<integer> := s.OrderBy(b->b).GetEnumerator;
|
||||
e.MoveNext();
|
||||
assert(e.Current = 1);
|
||||
var e2: IEnumerator<integer> := s.OrderBy(b->b).GetEnumerator();
|
||||
e2.MoveNext();
|
||||
assert(e2.Current = 1);
|
||||
end;
|
||||
begin
|
||||
|
||||
end.
|
||||
22
TestSuite/units/u_generics8.pas
Normal file
22
TestSuite/units/u_generics8.pas
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
unit u_generics8;
|
||||
|
||||
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;
|
||||
|
||||
end.
|
||||
6
TestSuite/units/u_generics9.pas
Normal file
6
TestSuite/units/u_generics9.pas
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
unit u_generics9;
|
||||
|
||||
begin
|
||||
var s := '1234';
|
||||
assert(s.All(char.IsDigit));
|
||||
end.
|
||||
5
TestSuite/usesunits/use_generics10.pas
Normal file
5
TestSuite/usesunits/use_generics10.pas
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
uses u_generics10;
|
||||
|
||||
begin
|
||||
|
||||
end.
|
||||
5
TestSuite/usesunits/use_generics5.pas
Normal file
5
TestSuite/usesunits/use_generics5.pas
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
uses u_generics5;
|
||||
|
||||
begin
|
||||
assert(f = 2);
|
||||
end.
|
||||
6
TestSuite/usesunits/use_generics6.pas
Normal file
6
TestSuite/usesunits/use_generics6.pas
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
uses u_generics6;
|
||||
|
||||
begin
|
||||
p1(new r1);
|
||||
assert(i = 1);
|
||||
end.
|
||||
5
TestSuite/usesunits/use_generics7.pas
Normal file
5
TestSuite/usesunits/use_generics7.pas
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
uses u_generics7;
|
||||
|
||||
begin
|
||||
test;
|
||||
end.
|
||||
10
TestSuite/usesunits/use_generics8.pas
Normal file
10
TestSuite/usesunits/use_generics8.pas
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
uses u_generics8;
|
||||
|
||||
begin
|
||||
var a := new byte[5];
|
||||
p1(a);
|
||||
assert(i = 1);
|
||||
i := 0;
|
||||
p2(a);
|
||||
assert(i = 2);
|
||||
end.
|
||||
5
TestSuite/usesunits/use_generics9.pas
Normal file
5
TestSuite/usesunits/use_generics9.pas
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
uses u_generics9;
|
||||
|
||||
begin
|
||||
|
||||
end.
|
||||
Loading…
Reference in a new issue