[fpc-pascal] Default record const values

Sven Barth pascaldragon at googlemail.com
Wed Nov 14 06:37:15 CET 2018


Am 14.11.2018 um 02:05 schrieb John Doe:
> On Mon, Nov 12, 2018 at 1:51 AM Sven Barth via fpc-pascal 
> <fpc-pascal at lists.freepascal.org 
> <mailto:fpc-pascal at lists.freepascal.org>> wrote:
>
>     The compiler now correctly rejects such declarations with a "Type
>     is not completely defined error".
>
>
> Making this not work is a ridiculous removal of a feature for no 
> logical reason that serves no benefit to anyone whatsoever. It just 
> makes records less useful, and that's it.

Just to avoid any confusion: I am talking about a typed constant 
declared inside a record's declaration of the same type as the record. 
Constants outside a record, even inside other records work as before.
Also there can't be that many libraries affected, because this only ever 
worked in trunk. In 3.0.x the compiler simply crashed when encountering 
such a constant.

>
> I've already encountered several large libraries that are pretty 
> massively broken by this pointless change. You're very visibly just 
> making up arbitrary "rules" out of nowhere that certainly aren't 
> actually defined anywhere and implementing (or de-implementing) 
> whatever strikes your fancy on a given day.
>
> Also:
>
> On Sat, Nov 10, 2018 at 4:56 AM Sven Barth via fpc-pascal 
> <fpc-pascal at lists.freepascal.org 
> <mailto:fpc-pascal at lists.freepascal.org>> wrote:
>
>     It's not possible to use typed constants as initializers for
>     variables.
>
>
> What are you talking about? Of course that's possible. People do it 
> literally all the time.

=== code begin ===

type
   TTest = record
   public
     a: LongInt;
     b: LongInt;
   public //const
     //Default: array of TTest;// = (a: 42; b: 21);
   end;

const
   Test: TTest = (a: 42; b: 21);

var
   TestVar: TTest = Test; // <<<< this fails, because typed constants 
can't be used as initializers (would also be the case if Test and 
TestVar had any other type; only untyped constants are supported here)

=== code end ===

Regards,
Sven
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20181114/1d135e3b/attachment.html>


More information about the fpc-pascal mailing list