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.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,fba93c19bb4e7dbd X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-07-14 11:36:45 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!cyclone.bc.net!sjc70.webusenet.com!news.webusenet.com!pd2nf1so.cg.shawcable.net!residential.shaw.ca!sn-xit-03!sn-xit-06!sn-post-01!supernews.com!corp.supernews.com!not-for-mail From: "Randy Brukardt" Newsgroups: comp.lang.ada Subject: Re: Q: Endless loop by dispatching Date: Mon, 14 Jul 2003 13:38:14 -0500 Organization: Posted via Supernews, http://www.supernews.com Message-ID: References: <3F0ED2C8.6080409@snafu.de> X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4807.1700 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4910.0300 X-Complaints-To: abuse@supernews.com Xref: archiver1.google.com comp.lang.ada:40265 Date: 2003-07-14T13:38:14-05:00 List-Id: "Dmitry A. Kazakov" wrote in message news:erm4hvsg533tp2hkhsj86tftu0s8i0ot9j@4ax.com... > 2. To have an ability to refer the immediate parent [and visible > ancestor] types. However, this feature should be carefully designed to > keep a way free to multiple inheritance. Something like this: > > if X in S'Class then X'Super (S) is the most specific ancestor type in > S'Class. For single inheritance case, it is abbreviated to S'Super. > > For tags 'Pred and 'Succ attributes should be defined to get tags > along a derivation path: > > T'Pred (S) is the tag of a base type in S'Class, T'Succ (S) is the tag > of a derived type in 'not S'Class or S' (all ancestors of S including > S). Constraint_Error if the result does not exist or is ambiguous. We discussed something like this when we were discussing controlling dispatching. However, there is a significant problem in that a type can have two (related) parents: package P is type NT is new T1 with private; private type NT is new T2 with private; end P; with P; procedure Q is begin NT'Parent -- ??? Does NT'Parent refer to T1 or T2? If it returns T2, we're breaking privateness (with all of the methodlogical and implementation problems that entails). If it returns T1, we're not really getting the right answer, and moreover, the result changes with visibility (yuck!). Thus, we haven't really moved forward on this. Randy.