tgeneric111.pp 788 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. program tgeneric111;
  2. {$mode delphi}
  3. uses
  4. ugeneric108b, ugeneric108a;
  5. type
  6. TTestA = ugeneric108a.TTest<LongInt>;
  7. TTestB = ugeneric108b.TTest<LongInt>;
  8. function Test1: ugeneric108a.TTest<LongInt>;
  9. begin
  10. Result.f := 1;
  11. end;
  12. function Test2: ugeneric108b.TTest<LongInt>;
  13. begin
  14. Result.f := 2;
  15. end;
  16. var
  17. a1: TTestA;
  18. b1: TTestB;
  19. a2: ugeneric108a.TTest<LongInt>;
  20. b2: ugeneric108b.TTest<LongInt>;
  21. begin
  22. if a1.Test <> 1 then
  23. Halt(1);
  24. if b1.Test <> 2 then
  25. Halt(2);
  26. if a2.Test <> 1 then
  27. Halt(3);
  28. if b2.Test <> 2 then
  29. Halt(4);
  30. if ugeneric108a.TTest<LongInt>.Test2 <> 1 then
  31. Halt(5);
  32. if ugeneric108b.TTest<LongInt>.Test2 <> 2 then
  33. Halt(6);
  34. a1 := Test1;
  35. if a1.f <> 1 then
  36. Halt(7);
  37. b1 := Test2;
  38. if b1.f <> 2 then
  39. Halt(8);
  40. end.