Error: Class type expected, but got "T"

FPC [main]


program GenericConstraints;
{$mode DELPHI}

type
  TMyClass = class end;
  TMyGenClass<T: TMyClass> = class end;

  TWrapper = class
    procedure DoWork<T: TMyClass>(X: TMyGenClass<T>);
  end;

procedure TWrapper.DoWork<T>(X: TMyGenClass<T>);
begin
end;

begin
end.

Output:

Error: Class type expected, but got "T"
Error: Function header doesn't match any method of this class "DoWork$1(<erroneous type>);"
Error: Found declaration: DoWork$1(TMYGENCLASS$1$crcBF5EA2A4_crc77503D54);

Maybe related:

#35943

#38785