<p>Am 27.02.2013 13:22 schrieb "ListMember" <<a href="mailto:listmember@letterboxes.org">listmember@letterboxes.org</a>>:<br>
> Referring to your other post, you gave this example:<br>
><br>
><br>
> === example begin ===<br>
><br>
> type<br>
>   SomeType1 = record;<br>
>   SomeType2 = record;<br>
><br>
>   SomeType1 = record<br>
>     // ...<br>
>     property SomeProperty: SomeType2 read ... write ...<br>
>   end;<br>
><br>
>   SomeType2 = record<br>
>     // ...<br>
>     property SomeProperty: SomeType1 read ... write ...<br>
>   end;<br>
><br>
> === example end ===<br>
><br>
> While it does capture the idea, let me make it more detailed/clearer.</p>
<p>To be honest: I left out the methods, because of lazyness :)</p>
<p>> I only (wish to) use the forward declared record types in methods/getters/setters/properties.<br>
><br>
> Correct me if I am wrong, but this way we can eliminate the possiblity of introducing infinite recursion (that would arise if we used forward declared record types as fields).<br>
><br>
> Is there still any logical flaw in this?</p>
<p>After having slept about it a bit, I came to the conclusion that your proposal is at least a valid one considering that we already differentiate between record field or not for the type itself. As a forward declaration needs to be resolved in the same type section we don't need to bother about global variable or function declarations either. What could be a bit counterintuitive though is if there is a class, interface or object declaration inbetween and that one uses the record as well... Depending on when the sizes of the instances and parameters are calculated, we can either allow or need to forbid its usage...</p>

<p>You can create a feature request on the bugtracker. I don't know yet whether we'll definitely implement it or not, but this way it's up for discussion. And please state there again that you don't want to use it for fields.</p>

<p>Regards,<br>
Sven</p>