Restricted generic param types

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Restricted generic param types

Ryan Joseph
I’m getting a parse error here. It thinks the “U” is another type but in fact it’s another generic parameter and not related to “T” at all.  Is this a bug? I don’t think the way the parsing works the compiler actually can discern this condition.

{$mode objfpc}
{$modeswitch advancedrecords}

program generic_constants_restricted;

type
        generic TList<T:tobject, U> = record
        end;

begin
end.


Regards,
        Ryan Joseph

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Reply | Threaded
Open this post in threaded view
|

Re: Restricted generic param types

Free Pascal - General mailing list
Am Fr., 9. Nov. 2018, 05:48 hat Ryan Joseph <[hidden email]> geschrieben:
I’m getting a parse error here. It thinks the “U” is another type but in fact it’s another generic parameter and not related to “T” at all.  Is this a bug? I don’t think the way the parsing works the compiler actually can discern this condition.

{$mode objfpc}
{$modeswitch advancedrecords}

program generic_constants_restricted;

type
        generic TList<T:tobject, U> = record
        end;

begin
end.

You must use ";" in that case. All parameters separated by "," are of the same "constraint type" while ";" separates these. Essentially like a parameter declaration for a function. 
(and yes, Delphi handles it like that as well) 

Regards, 
Sven 

_______________________________________________
fpc-pascal maillist  -  [hidden email]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal