[fpc-devel] Operator overloading and {$mode delphi}

Ben Grasset operator97 at gmail.com
Sun Apr 14 03:58:06 CEST 2019


On Sat, Apr 13, 2019 at 6:04 PM Sven Barth via fpc-devel <
fpc-devel at lists.freepascal.org> wrote:

> Maybe we should mention that in the documentation...
>

AFAIK it's never been possible to use FPC-style operator overloading in
mode Delphi... is it supposed to be allowed?

For example:

unit Unit1;

{$mode delphi}

interface

uses
  Classes, SysUtils;

type
  TRec = record
  end;

operator Implicit(constref ARec: TRec): String;

implementation

operator Implicit(constref ARec: TRec): String;
begin
end;

end.

That program gives: "unit1.pas(14,10) Fatal: Syntax error, "=" expected but
"identifier IMPLICIT" found"

Why it is specifically expecting "=", I have no idea. In general though I
don't recall ever having successfully used non-"class operator" operators
in {$mode Delphi}.

WRT the docs, there's a lot of things they don't mention. They entirely
ignored the fact that records and objects (not just classes) can be
enumerators until a few days ago.

Of course, nobody's gonna know the docs have been updated for a long long
time, because they only get built every couple of years or so at best...
(Unless you do it yourself, which is not even *that* hard, but still way
harder than it *should* be in a manner that is rather far removed from
FPC's usual cross-platform nature for pretty dubious results: i.e. the docs
are pretty much *just ok*, not super great or anything.)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20190413/aee39982/attachment.html>


More information about the fpc-devel mailing list