Hello,

In free pascal/pascal/delphi it's necessary to declare a pointer to a record, which is to be used inside the record to point to itself, before the record itself without a type directive in between them for example:

// correct:
type
   PMyRecord = ^TMyRecord;
   TMyRecord = record
       mSelf : PMyRecord;
       mNext : PMyRecord;
   end;

// incorrect/not allowed:
type
   PMyRecord = ^TMyRecord; // above type anywhere else.

type
   TMyRecord = record
       mSelf : PMyRecord;
       mNext : PMyRecord;
       mPrev : ^TMyRecord; // not allowed.
   end;

   PMyRecord = ^TMyRecord; // below anywhere else

// and so forth...

I would first like to remark about this: "This is very newb unfriendly... newbs might not know this... and will get frustrated by this weird/odd/non-intuitive language construction".

Now some question about this:

1. Is there a compiler-related technical reason why it has to be like this ? If so explain shortly...

2. Is there perhaps a technical solution for it so this is no longer required ? If so how much effort would a solution cost ?

3. (Does free pascal still follow these restrictions ? I guess so... )

Final question assuming it's solvable::

4. Do you think it's worth to solve this oddity and make the language more newb friendly and more intuitive ?

5. Would it break anything ? (I think not... it would be an extension/relaxation of the language...)

Bye,
Skybuck.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to