> On Oct 7, 2019, at 1:54 AM, Sven Barth via fpc-pascal 
> <fpc-pascal@lists.freepascal.org> wrote:
> 
> There is nothing debatable here. If a generic parameter is not used in the 
> parameter list (cause it's used in the result type (either directly or to 
> specialize something else), only the body of the routine or even not at all), 
> then that routine must not be used for implicit specialization. 
> 

Yeah I got it now. I’ll make an ambiguous error message in this case. Right now 
the cases the will trigger it are:

1) generic functions that have the same name/parameter list, regardless of 
generic parameters. This is an “Ambiguous call to DoThis” error. 

        generic function DoThis<T>(a: T): T;
        generic procedure DoThis<T>(a: T; b: integer = 100);
        generic function DoThis<T,U>(a: T): U;
        generic procedure DoThis<T,U,S>(a: T);
        var 
                field: S; 

2) Parameter not in function parameter list. Not sure yet but something like 
“DoThis can not infer specialization from parameter list”.
        generic function DoThis<T>(a: integer): T;

If there’s more let me know.

Regards,
        Ryan Joseph

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to