<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Am 31.10.2013 14:42, schrieb Frederic
Da Vitoria:<br>
</div>
<blockquote
cite="mid:CANe_y9Qjy15qU-kEQRWmcCyeb6vOxi3mTyy7a7EUqxhVZSzNNA@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">2013/10/31 Sven Barth <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:pascaldragon@googlemail.com"
target="_blank">pascaldragon@googlemail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>Am 31.10.2013 12:38, schrieb Frederic Da Vitoria:<br>
</div>
<div>
<div class="h5">
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">2013/10/31 Sven Barth
<span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:pascaldragon@googlemail.com"
target="_blank">pascaldragon@googlemail.com</a>></span><br>
<blockquote class="gmail_quote"
style="margin:0 0 0 .8ex;border-left:1px
#ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>Am 31.10.2013 02:45, schrieb
Xiangrong Fang:<br>
</div>
<div>
<div>
<blockquote type="cite">
<div dir="ltr">
<div 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
moz-do-not-send="true"
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> .</div>
</blockquote>
<div><br>
</div>
<div>
<div>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><br>
</div>
<div>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><br>
</div>
<div>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>
<br>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
For unit interfaces there is indeed the
point that if unit A uses unit B then
the program which uses unit A will be
able to access types used by unit A.
E.g.:</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
...<br>
<blockquote
cite="mid:CANe_y9Qjy15qU-kEQRWmcCyeb6vOxi3mTyy7a7EUqxhVZSzNNA@mail.gmail.com"
type="cite">
<div dir="ltr">
<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 text="#000000" bgcolor="#FFFFFF">
<div>
<div class="h5">
<blockquote type="cite">
<div dir="ltr">
<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 text="#000000" bgcolor="#FFFFFF">It's
this way at least since Turbo Pascal
(though without classes then ;) ).<br>
</div>
</blockquote>
</div>
<br>
</div>
<div class="gmail_extra">Yes, I agree this is
the TP/Delphi way, and as such should be kept
at least in DELPHI mode. But is this really
good? Doesn't this contradict the Pascal
philosophy? Borland did a few questionable
things (look at how you used the semicolons in
you examples above ;-) ), and it took some
decisions when implementing units. But how is
this handled in Modula?<br clear="all">
</div>
</div>
</blockquote>
</div>
</div>
Undoing this even for only non-TP/Delphi modes would
mean adjusting very much code out there. So no, this is
how Object Pascal works.<br>
</div>
</blockquote>
</div>
<br>
</div>
<div class="gmail_extra">Ah, you mean that this is too much
intricately mixed with the compiler code and it would be much
too much work to change? OK, this I understand :-)<br
clear="all">
</div>
<div class="gmail_extra"><br>
</div>
</div>
</blockquote>
It's not about being mixed with the compiler code it's about too
many legacy code relying on this behavior, because it's a given
since TP times.<br>
<br>
Regartds,<br>
Sven<br>
</body>
</html>