From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,93dce172c8d3e2fb X-Google-Attributes: gid103376,public From: jsa@alexandria.organon.com (Jon S Anthony) Subject: Re: Which compiler is correct? Date: 1997/06/20 Message-ID: #1/1 X-Deja-AN: 251438286 Distribution: world References: <33A77C54.5484@bix.com> Organization: PSI Public Usenet Link Newsgroups: comp.lang.ada Date: 1997-06-20T00:00:00+00:00 List-Id: In article Simon Wright writes: > bobduff@world.std.com (Robert A Duff) writes: > > > Compiler O is correct. The inherited i component of type y is > > implicitly declared within the private part of a.b. Since a.c cannot > > see this implicit declaration, the i component of z is never implicitly > > declared (although it still exists at run time, and you can get at it by > > doing "x(two).i"). > > a.c's body can see the full view of type a.x > a.c's body can only see the partial view of type a.b.y > the partial view of type a.b.y says it's a new a.x > so how come the a.x bits of a.b.y aren't visible to a.c's body? I believe this is due to the "fact" (from 7.3.1(3)) that the only characteristics used from the parent of x for y _at its declaration_ are those visible _at that point_. The i component of the parent x is not visible until the full declaration in the private portion and it is only at that point that the implicit declaration for y's i component can take place. So, the declaration of y visible to a.c does not have the implicit declaration of x's i component. Why this is, I do not know. /Jon -- Jon Anthony OMI, Belmont, MA 02178 617.484.3383 "Nightmares - Ha! The way my life's been going lately, Who'd notice?" -- Londo Mollari