fpc/tests/webtbs/tw26288.pp
svenbarth aca48a4cf2 Fix for Mantis #26288. Types declared inside a generic must have the df_generic flag set. Period.
ptype.pas, read_named_type:
  * array_dec & procvar_dec: set df_generic of the array/procvar if parse_generic was originally set

+ added test

git-svn-id: trunk@27874 -
2014-06-06 14:22:17 +00:00

55 lines
1.1 KiB
ObjectPascal

unit tw26288;
{$mode objfpc}{$h+}
interface
uses
Classes, SysUtils;
type
{ TGenVector }
generic TGenVector<_TItem_> = class
public type
TItemToString = function (const Item: _TItem_) : String of object;
strict private
fOnItemToString: TItemToString;
procedure SetOnItemToString(AValue: TItemToString);
public
constructor Create;
function DefaultItemToString(const Item: _TItem_) : String; virtual;
property OnItemToString : TItemToString read fOnItemToString
write SetOnItemToString;
end;
implementation
{--- TGenVector.Create ---}
constructor TGenVector.Create;
begin
SetOnItemToString(nil);
end;
{--- TGenVector.DefaultItemToString ---}
function TGenVector.DefaultItemToString(const Item: _TItem_): String;
begin
raise Exception.Create('Method not redefined');
Result := '';
end;
{--- TGenVector.SetOnItemToString ---}
procedure TGenVector.SetOnItemToString(AValue: TItemToString);
begin
if AValue = nil then
fOnItemToString := @DefaultItemToString
else
fOnItemToString := AValue;
end;
end.