[fpc-devel] Generic method works on Linux, not on Windows?

Yuriy Sydorov jura at cp-lab.com
Wed May 27 00:41:58 CEST 2020


On 27.05.2020 1:01, Joost van der Sluis wrote:
> Op 26-05-2020 om 23:36 schreef Yuriy Sydorov:
>> Does it happen with the fpc trunk?
>> If yes, what revision do you use? It looks like an issue with my initial implementation of the $parentfp parameter 
>> optimization. "$fin$00000037" is a reference to an internal SEH handler procedure which is a special nested procedure.
> 
> Yes, Trunk, updated last sunday. (And today, didn't help) x86_64
> 
>> The latest trunk for win32 compiles fine the following modified example:
>>
>> {$mode objfpc}{$H+}
>>
>> generic function CreateObjectFromJSONString<T>(AJSONString: string; ADescriptionTag: string = ''): T;
>> begin
>>    Result := nil;
>> end;
>>
>> var
>>    LaunchRequest: TObject;
>> begin
>>    LaunchRequest := specialize CreateObjectFromJSONString<TObject>('qwe');
>> end.
> 
> It's this project: https://gitlab.freepascal.org/Joost/fpdserver/
> 
> And the generic function is defined in:
> 
> https://gitlab.freepascal.org/Joost/cerialization
> 
> I'll try your code tomorrow. Maybe I can get an easier example.

Thanks for the sources. When I put a generic function in a separate unit, I am able to reproduce the issue.
Surprisingly it is not caused by my changes, since it fails even with earlier revisions. I've tested with r44958 and it 
still fails.
It would be nice if you find the offending revision.

Yuriy.


More information about the fpc-devel mailing list