<div dir="ltr"><div class="gmail_default" style="font-family:courier new,monospace"><span style="font-family:arial">2013/10/30 Jonas Maebe </span><span dir="ltr" style="font-family:arial"><<a href="mailto:jonas.maebe@elis.ugent.be" target="_blank">jonas.maebe@elis.ugent.be</a>></span><br>


</div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br></div>
This is not equivalent. A private type declaration in a class adds a new identifier that is visible inside that class. You then use it, still in that class, to declare the return type of a function. Next, in a scope where that type identifier is no longer visible, you call the function.<br>



<br>
My example is a complete match to that scenario as far as identifier visibility is concerned (you use a type in a scope where it is visible to declare a function return type, and then call the function in a scope where it is not visible). In your example, the type is not visible in the place where the function is declared but only where it is defined<div class="gmail_default" style="font-family:'courier new',monospace;display:inline">


​.</div></blockquote><div><br></div><div><div class="gmail_default" style="font-family:'courier new',monospace">​This is logically WRONG. Because to the machine, any function return value can be seen as an array of bytes, for example, a pointer is array[0..3] of Byte on a 32-bit machine.  The purpose of type system is to explain what these bytes stands for. So, if a type is out-of-scope, how do you interpret the data?​  </div>


<div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default" style="font-family:'courier new',monospace">The current "delphi compatible" implementation IS using the type information to compile the program, i.e. although it is not visible, it is indeed used by the compile, which, in my opinion, violates visibility rules.</div>


<div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default" style="font-family:'courier new',monospace">Standing on your view point, if a type is no longer visible, but a variable (function return value) of that type is in current scope, and understood by the program, this means, this value itself carries type information!  Is is kind of meta data available in Pascal? If so, I think RTTI should work for ANY kind of primitive data types.</div>

<div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default" style="font-family:'courier new',monospace">Regards,</div><div class="gmail_default" style="font-family:'courier new',monospace">


Xiangrong</div><br></div></div></div></div>