[fpc-devel] generic forward declaration?
Mattias Gaertner
nc-gaertnma at netcologne.de
Wed Jul 30 13:34:54 CEST 2025
On 7/30/25 13:01, Martin Frb via fpc-devel wrote:
> On 30/07/2025 12:23, Mattias Gaertner via fpc-devel wrote:
>>[...]
>> pas2js compiles it.
>> OTOH pas2js currently creates 3 internal specializations for each TFoo
>> and TBar.
>
> There should only be
>
> TFoo<Byte, Boolean>
> TFoo<Boolean, Byte>
Yes.
Well, actually, in your example you don't use them, so pas2js omits a lot.
But internally while resolving the code it already creates a
specialization for F
generic TFoo<A, B> = class
F:specialize TBar<A,B>;
with the generic template parameter A and B, so it can resolve and check
the generic code. This specialization is never transpiled to code. It
merely exists for type checking. It's a todo to create less of these
internal specializations.
> If you got 3 then you got one of them twice. And if they are different
> types, then at some point you get issues with assigning them to the fields?
Each generic type in pas2js has a list of specializations with each
combination of parameters unique.
This is enough for simple programs, but for packages Delphi supports
duplicate specializations.
Mattias
More information about the fpc-devel
mailing list