program tgeneric111; {$mode delphi} uses ugeneric108b, ugeneric108a; type TTestA = ugeneric108a.TTest; TTestB = ugeneric108b.TTest; function Test1: ugeneric108a.TTest; begin Result.f := 1; end; function Test2: ugeneric108b.TTest; begin Result.f := 2; end; var a1: TTestA; b1: TTestB; a2: ugeneric108a.TTest; b2: ugeneric108b.TTest; begin if a1.Test <> 1 then Halt(1); if b1.Test <> 2 then Halt(2); if a2.Test <> 1 then Halt(3); if b2.Test <> 2 then Halt(4); if ugeneric108a.TTest.Test2 <> 1 then Halt(5); if ugeneric108b.TTest.Test2 <> 2 then Halt(6); a1 := Test1; if a1.f <> 1 then Halt(7); b1 := Test2; if b1.f <> 2 then Halt(8); end.