[fpc-pascal] Implicit generic specializations

Ryan Joseph ryan at thealchemistguild.com
Mon Dec 3 03:14:17 CET 2018



> On Dec 2, 2018, at 10:53 PM, Sven Barth via fpc-pascal <fpc-pascal at lists.freepascal.org> wrote:
> 
> Specialization is expensive. If specialization can be avoided, it should be. Not to mention that the non-generic one could have more optimized code. 
> Though to be sure I'll test with Delphi, we'll have to be compatible there anyway. 
> 

I think the “dummy” sym which is added after the generic procedure is overwriting the existing symbols. In the example below (my code disabled now) DoThis gives an error because it thinks DoThis is the dummy sym. If we want this to work the dummy needs to keep track of existing procsyms, unless there’s another way to get that information?

Personally I’m fine with this because I didn’t expect to be mixing generic procedures anyways.

procedure DoThis(msg:integer);
begin
	writeln('DoThis:',msg);
end;

procedure DoThis(msg:string);
begin
	writeln('DoThis:',msg);
end;

generic procedure DoThis<T>(msg:T);
begin
	writeln('DoThis$1:',msg);
end;

begin
	DoThis('a’); // ERROR: "Generics without specialization cannot be used as a type for a variable"
end.

Regards,
	Ryan Joseph




More information about the fpc-pascal mailing list