fpc/tests/test/tfuncref28.pp

38 lines
737 B
ObjectPascal

program tfuncref28;
{$mode objfpc}{$H+}
{$modeswitch functionreferences}
uses
TypInfo;
type
{$M+}
TFunc = reference to function: LongInt;
{$M-}
TFunc2 = reference to function: LongInt;
var
ti: PTypeInfo;
td: PTypeData;
intf: PInterfaceData;
methods: PIntfMethodTable;
begin
ti := PTypeInfo(TypeInfo(TFunc));
td := GetTypeData(ti);
intf := PInterfaceData(td);
methods := intf^.MethodTable;
if methods^.Count <> 1 then
Halt(1);
if methods^.RTTICount <> 1 then
Halt(2);
ti := PTypeInfo(TypeInfo(TFunc2));
td := GetTypeData(ti);
intf := PInterfaceData(td);
methods := intf^.MethodTable;
if methods^.Count <> 1 then
Halt(3);
if methods^.RTTICount <> High(Word) then
Halt(4);
end.