{$MODE OBJFPC}
{$IFDEF MSWINDOWS}{$APPTYPE CONSOLE}{$ENDIF}
operator + (Left: LongInt; const Right: string): string;
begin
writestr(Result,Left,Right);
end;
operator + (const Left: string; Right: LongInt): string;
begin
writestr(Result,Left,Right);
end;
var
Text: string = 'text';
Number: LongInt = 123456;
begin
Writeln(Text + Number); // V+V
Writeln(Number + Text); // V+V
Writeln(789012 + Text);//L+V
Writeln(Text+789012);//V+L
// Next fails and is L+V
Writeln('else text'+Number); // fails only on LEFT string literals + non-literal number with all string types
// Next pass again
Writeln(Number + 'other text'); // passes, V+L
Writeln(string('else text')+Number); //passes, cast(L)+V
writeln(789012 + 'other text'); // passes, L+L
writeln('other text',789012); // passes, L+L
Readln;
Readln;
end.