[fpc-devel] Strange error / Why / generic in wrapper class
Sven Barth
pascaldragon at googlemail.com
Fri Nov 28 19:08:21 CET 2025
Martin Frb via fpc-devel <fpc-devel at lists.freepascal.org> schrieb am Fr.,
28. Nov. 2025, 14:52:
> The first 2 procedures show that
> var v2: TWrap1.specialize TTest4<TObject>;
>
> is valid. The generic can be specialized directly for the variable.
>
> But, if that variable is anywhere within TWrap1, then it fails.
> Why?
>
>
>
> 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>;
> 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>;
> begin
> end;
>
> begin
> end.
>
Bug, please report.
Regards,
Sven
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20251128/3f37626f/attachment.htm>
More information about the fpc-devel
mailing list