fpc/tests/test/tgeneric98.pp
svenbarth a4e8f00399 Allow the usage of type aliases of generic type parameters outside of the generic. Besides being useful by itself it will also be needed in the future when the visibility of the type parameters is changed from public to strict private.
ptype.pas, id_type:
  * don't generate an error if the undefineddef typesym is an explicit rename that belongs to a generic

+ added test

git-svn-id: trunk@29485 -
2015-01-16 16:38:51 +00:00

51 lines
856 B
ObjectPascal

{ %NORUN }
program tgeneric98;
{$mode objfpc}
type
generic TTest<T> = class
public type
TAlias = T;
private
fField: TAlias;
procedure SetField(aValue: TAlias);
public
property Field: TAlias read fField write SetField;
function CalcField: TAlias;
end;
generic TTest2<T> = class
public type
TTestT = specialize TTest<T>;
private
fField: TTestT.TAlias;
procedure SetField(aValue: TTestT.TAlias);
public
property Field: TTestT.TAlias read fField write SetField;
function CalcField: TTestT.TAlias;
end;
procedure TTest.SetField(aValue: TAlias);
begin
end;
function TTest.CalcField: TAlias;
begin
Result := Default(TAlias);
end;
procedure TTest2.SetField(aValue: TTestT.TAlias);
begin
end;
function TTest2.CalcField: TTestT.TAlias;
begin
Result := Default(TTestT.TAlias);
end;
begin
end.