{ %NORUN } (* testing application for https://forum.lazarus.freepascal.org/index.php/topic,47936.0.html *) program tw36496b; {$Mode objfpc}{$H+} generic function TestGenRecurse(const AInput : T) : Boolean; begin //Result := False; (* below, if uncommented will fail to compile tester.lpr(12,19) Error: Identifier not found "TestGenRecurse$1" *) specialize TestGenRecurse(AInput); specialize TestGenRecurse('test'); specialize TestGenRecurse(42); end; generic procedure TestGenRecurseProc(const AInput : T); begin (* below method calls compile fine *) specialize TestGenRecurseProc(AInput); specialize TestGenRecurseProc('test'); specialize TestGenRecurseProc(42); end; begin specialize TestGenRecurse('testing'); specialize TestGenRecurseProc('testing'); end.