diff --git a/TestSuite/generics73.pas b/TestSuite/generics73.pas new file mode 100644 index 000000000..50b41fe29 --- /dev/null +++ b/TestSuite/generics73.pas @@ -0,0 +1,28 @@ +type + GenericBase = class end; + + GenericObject = class end; + + PartialContainer = partial class end; + + GPUCommandContainer = class(GenericBase) end; + +// Можно сделать пред-описанием метода, чтоб обойтись без forward +procedure p1(o: PartialContainer); where T: record; forward; + +type + // Обязательно описать предка после описания p1 + PartialContainer = partial class(GPUCommandContainer>) end; + +procedure p0(o: GenericBase>); where T: record; +begin end; + +procedure p1(o: PartialContainer); where T: record; +begin + //Ошибка: Невозможно инстанцировать, так как тип T не является размерным + p0(o); +end; + +begin + p1(new PartialContainer()); +end. \ No newline at end of file