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