program bug38970; {$mode objfpc}{$H+} {$modeswitch nestedprocvars} uses {$IFDEF UNIX} cthreads, {$ENDIF} Classes { you can add units after this }; type generic TOption = record end; generic TIterNestedFunc = function (): specialize TOption{declaration:TOption} is nested; procedure Test; begin end; begin end.