mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 20:08:12 +02:00

* general tests for the helper feature (thlp*) * tests for class helpers (tchlp*) * tests for record helpers (trhlp*) With my current yet-to-be-commited implementation nearly all tests pass, but some fail because of missing FPC features: * thlp30.pp currently fails because of generic constraints, but should fail despite the constraints * thlp29.pp fails, because generic methods are not yet supported * trhlp8.pp, trhlp9.pp, trhlp10.pp fail, because one can't use default properties using the abbreviated syntax * trhlp17.pp, trhlp18.pp, trhlp19.pp fail, because nested types are not supported for records git-svn-id: branches/svenbarth/classhelpers@17237 -
54 lines
868 B
ObjectPascal
54 lines
868 B
ObjectPascal
{ published properties/methods are available in the helper's RTTI }
|
|
program thlp37;
|
|
|
|
{$ifdef fpc}
|
|
{$mode delphi}
|
|
{$endif}
|
|
{$apptype console}
|
|
|
|
uses
|
|
typinfo;
|
|
|
|
type
|
|
TFoo = class
|
|
|
|
end;
|
|
|
|
{$M+}
|
|
TFooHelper = class helper for TFoo
|
|
private
|
|
function GetTest: Integer;
|
|
published
|
|
property Test: Integer read GetTest;
|
|
end;
|
|
{$M-}
|
|
|
|
function TFooHelper.GetTest: Integer;
|
|
begin
|
|
Result := 2;
|
|
end;
|
|
|
|
var
|
|
ti: PTypeInfo;
|
|
td: PTypeData;
|
|
begin
|
|
ti := TypeInfo(TFooHelper);
|
|
if ti = Nil then begin
|
|
Writeln('TypeInfo is Nil');
|
|
Halt(1);
|
|
end;
|
|
if ti^.Kind <> tkHelper then begin
|
|
Writeln('Type kind is not a helper');
|
|
Halt(2);
|
|
end;
|
|
td := GetTypeData(ti);
|
|
if td = Nil then begin
|
|
Writeln('TypeData is Nil');
|
|
Halt(3);
|
|
end;
|
|
Writeln('Property count: ', td^.PropCount);
|
|
if td^.PropCount <> 1 then
|
|
Halt(4);
|
|
Writeln('ok');
|
|
end.
|