On 21.11.2015 19:09, leledumbo wrote:
Congratulations! Nice work, Sven.
It's a bit weird to see the specialize in the middle of an expression but
that's not a problem for me. The one that needs explanation is "complex
expressions", what's the minimum requirement for an expression to be called
complex for this case?
I'll simply quote my answer to Maciej on fpc-devel:
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-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal