From: bobduff@world.std.com (Robert A Duff)
Subject: Re: Ada 95 visibility question
Date: 1997/09/22
Date: 1997-09-22T00:00:00+00:00 [thread overview]
Message-ID: <EGxG56.FJt@world.std.com> (raw)
In-Reply-To: 3424860A.2777@bix.com
In article <3424860A.2777@bix.com>, Tom Moran <tmoran@bix.com> wrote:
>Of three compilers I tried this on, 2 took it happily and one said it
>couldn't find such a thing as "peek_a_boo" at the place indicated.
>What's correct?
This is a pretty subtle question. The rules are in 7.3.1.
The 1 compiler is correct; the other 2 are wrong. :-(
>package c is
> type root is tagged private;
>private
> type root is tagged record
> peek_a_boo:integer;
> end record;
>end c;
>
>package c.d is
> type dialog is new c.root with private;
>private
> type dialog is new c.root with record
> dd:integer;
> end record;
>end c.d;
>
>with c.d;
>package c.f is
> type file_dialog is new c.d.dialog with private;
> procedure p(x:in out file_dialog);
>private
> type file_dialog is new c.d.dialog with record
> ff:integer;
> end record;
>end c.f;
>
>package body c.f is
> procedure p(x:in out file_dialog) is
> y:integer;
> begin
> y:=root(x).peek_a_boo;
> y:=x.peek_a_boo; 1/3 of compilers tested complained
This is illegal. Dialog has a peek_a_boo component implicitly declared
in the private part of c.d. There is no place within the immediate
scope of file_dialog where this private part is visible, so file_dialog
doesn't declare peek_a_boo. (It's still there at run time, but you can
only get at it by doing a type conversion, as shown above.)
There's also an AI on this section, but it doesn't affect this
particular case.
> end p;
>end c.f;
>
>with c.f;
>procedure bug1 is
> f:c.f.file_dialog;
>begin
> c.f.p(f);
>end bug1;
- Bob
next prev parent reply other threads:[~1997-09-22 0:00 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-09-20 0:00 Ada 95 visibility question Tom Moran
1997-09-22 0:00 ` Robert A Duff [this message]
-- strict thread matches above, loose matches on Subject: below --
1997-09-25 0:00 Chris Sparks (Mr. Ada)
1997-09-25 0:00 ` Bruce Link
1997-09-25 0:00 ` Tucker Taft
1997-09-26 0:00 ` Robert A Duff
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox