Maciej Izak wrote on Wed, 27 Jul 2016:

@@ operator is very simple way to determine where you point. In any other
case we have casting hell. See below (and more below). @@ exist rather as
fulfillment to pa := @a; form tdefault7.pp (anyway is necessary for untyped
pointers). You might not like @@ operator but @@ is part of long tradition.
In practice works like a charm and is very clear.

Getting rid of the @@-operator is also part of a long tradition in FPC. In fact, it was one of the first differences between FPC and Turbo Pascal modes, and it is the reason why we use a different procvar syntax (because we considered it very unclear). There is no @@-operator in FPC/ObjFPC modes at this time.

On a more general note, I think the fact that @recordvar no longer is a pointer to the record is wrong. You need a different keyword instead of "record" in that case (or possibly a modifier for the "record" keyword, like with "class abstract" -- but this is not a record at any more than an shortstring is a record, so I don't think that's a good idea either).

Completely changing how certain aspects of a record are treated by the compiler only based on the fact that somewhere there is a "default" modifier for one field is not good. You should definitely not have to go through an entire declaration of a record to be able to know how it will behave.


Jonas
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to