{ test syntax of a generic method in mode objfpc } program tgenfunc5; {$mode objfpc} type TTest = class generic function Add<T>(aLeft, aRight: T): T; end; generic function TTest.Add<T>(aLeft, aRight: T): T; begin Result := aLeft + aRight; end; var t: TTest; begin if t.specialize Add<LongInt>(2, 3) <> 5 then Halt(1); if t.specialize Add<String>('Hello', 'World') <> 'HelloWorld' then Halt(2); end.