specialization fails for generic declared inside of class / if specialize happens in method of that class
- FPC 3.3.1 9d6b66c9e4 and also FPC 3.2.3 - Windows 10 64 bit The below gives `Error: Parameters or result types cannot contain local type definitions. Use a separate type definition in a type block.` if the generic is - declared nested in a class - specialized in a function of the nested class (or the generic within the nested class) The error also happens if the specialization is **within a local type block**. The same specialization can be done in local var blocks of methods outside the wrapper. ```pascal program p1;{$Mode objfpc} type TFoo = class procedure Foo2; end; generic TGen<T2: TObject> = class procedure Foo2; end; TWrap1 = class public type generic TTest4<T2: TObject> = class procedure Foo2; end; public procedure P1; end; var gTest4: TWrap1.specialize TTest4<TObject>; { TFoo } procedure TFoo.Foo2; var v2: TWrap1.specialize TTest4<TObject>; begin end; procedure TGen.Foo2; var v2: TWrap1.specialize TTest4<TObject>; begin end; // TWRAP1 procedure TWrap1.TTest4.Foo2; var // V2: project1.lpr(50,32) Error: Parameters or result types cannot contain local type definitions. Use a separate type definition in a type block. v2: TWrap1.specialize TTest4<TObject>; type x2 = TWrap1.specialize TTest4<TObject>; begin end; procedure TWrap1.P1; var // V2: project1.lpr(50,32) Error: Parameters or result types cannot contain local type definitions. Use a separate type definition in a type block. v2: TWrap1.specialize TTest4<TObject>; type x2 = TWrap1.specialize TTest4<TObject>; begin end; begin end. ```
issue