On 21.11.2015 18:46, Maciej Izak wrote:
Because of the missing "specialize" keyword that mark
specializations complex expressions *do not* work in mode Delphi
yet. So assignments of function results are okay, but other than
that you'll likely encounter compiler errors.
Could you please show some example of limitations?
Just take the example that I posted and convert to mode Delphi:
=== code begin ===
{$mode delphi}
function Add<T>(aLeft, aRight: T): T;
begin
Result := aLeft + aRight;
end;
begin
Writeln(Add<String>('Generic ', 'routines') + Add<String>(' with ',
'Free Pascal'));
end.
=== code end ===
The compiler will error out like this:
=== output begin ===
Target OS: Linux for i386
Compiling ./fpctests/tgenroutines.pp
tgenroutines.pp(9,47) Fatal: Syntax error, ")" expected but "+" found
Fatal: Compilation aborted
=== output end ===
What will work however is this:
=== example begin ===
{$mode delphi}
function Add<T>(aLeft, aRight: T): T;
begin
Result := aLeft + aRight;
end;
var
s1, s2: String;
begin
s1 := Add<String>('Generic ', 'routines');
s2 := Add<String>(' with ', 'Free Pascal');
Writeln(s1, s2);
end.
=== example end ===
So basically just use it as a single factor (or statement) and you'll be
fine until I've improved that.
Regards,
Sven
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel