Hello,
I'm having a little trouble specializing a generic class procedure in
objfpc mode.
Given the following - which works fine in
delphi mode:
program TestGeneric;
{$mode delphi}
type
TSpeaker = class
class procedure Say<T>(AMessage: T);
end;
class procedure TSpeaker.Say<T>(AMessage: T);
begin
Writeln('Says: ', AMessage);
end;
begin
{ Works fine here }
TSpeaker.Say<Integer>(42);
end.
However, same thing in
objfpc mode won't compile
program TestGeneric;
{$mode objfpc}
type
TSpeaker = class
generic class procedure Say<T>(AMessage: T);
end;
generic class procedure TSpeaker.Say<T>(AMessage: T);
begin
Writeln('Says: ', AMessage);
end;
begin
{ Error: Syntax error, "<" expected but "." found }
specialize TSpeaker.Say<Integer>(42);
end.
I wonder if I'm missing anything obvious here?
For reference, sumbled upon this while trying out
TTask.Future<T> from
System.Threading.
Free Pascal Compiler version 3.3.1-17704-gb20f968454 [2025/03/21] for x86_64
Thanks.