var i: integer; type t0 = class end; function f0(q: t0): T; begin Result := default(T); i := 1; end; type t1 = partial class end; t2 = partial class(t0>) end; t1 = partial class // Обязательно как угодно использовать t2, имено с v0: t2; end; t2 = partial class(t0>) end; t1 = partial class //Ошибка: Нельзя преобразовать тип t1 к t1 function f1: t1 := f0(default(t2)); end; begin var o := new t1; var o2 := o.f1; assert(o2 = nil); assert(i = 1); end.