comp.lang.ada
 help / color / mirror / Atom feed
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




  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