pascalabcnet/TestSuite/explicitinterface.pas

48 lines
865 B
ObjectPascal
Raw Permalink Normal View History

2019-08-18 12:16:53 +03:00
type
IEnr = System.Collections.IEnumerator;
IEnb = System.Collections.IEnumerable;
2019-08-18 12:16:53 +03:00
TRec = record
a: integer;
end;
var a : integer;
type My = class(IEnumerable<integer>)
public
function IEnb.GetEnumerator(): IEnr;
begin
a := 1;
end;
function GetEnumerator(): IEnumerator<integer>;
begin
a := 2;
end;
end;
2019-08-18 12:16:53 +03:00
My2 = class(IEnumerable<TRec>)
public
function IEnb.GetEnumerator(): IEnr;
begin
a := 1;
end;
function GetEnumerator(): IEnumerator<TRec>;
begin
a := 2;
end;
end;
begin
var ien: IEnb := new My;
ien.GetEnumerator;
assert(a=1);
var ien2: IEnumerable<integer> := new My;
ien2.GetEnumerator;
assert(a=2);
a := 0;
var mc := new My;
mc.GetEnumerator();
assert(a=2);
2019-08-18 12:16:53 +03:00
var ien3: IEnumerable<TRec> := new My2;
a := 0;
ien3.GetEnumerator();
assert(a=2);
end.