[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