{ %NORUN } program tgeneric99; {$mode objfpc} uses ugeneric99; type TTest1 = specialize TTest; TTest2 = ugeneric99.specialize TTest; TTest3 = TTestClass.specialize TTest; TTest4 = ugeneric99.TTestClass.specialize TTest; TTest5 = TTestRec.specialize TTest; TTest6 = ugeneric99.TTestRec.specialize TTest; var test1: specialize TTestArray; test2: ugeneric99.specialize TTestArray; test3: ugeneric99.TTestClass.specialize TTestArray; test4: ugeneric99.TTestRec.specialize TTestArray; test5: ugeneric99.TTestClass.specialize TTest.TTestRec; test6: ugeneric99.TTestRec.specialize TTest.TTestClass; procedure Proc1(aArg: specialize TTestArray); begin end; procedure Proc2(aArg: ugeneric99.specialize TTestArray); begin end; procedure Proc3(aArg: ugeneric99.TTestClass.specialize TTestArray); begin end; procedure Proc4(aArg: ugeneric99.TTestRec.specialize TTestArray); begin end; procedure Proc5(aArg: ugeneric99.TTestClass.specialize TTest.TTestRec); begin end; procedure Proc6(aArg: ugeneric99.TTestRec.specialize TTest.TTestClass); begin end; begin end.