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=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!nntp-feed.chiark.greenend.org.uk!ewrotcd!newsfeed.xs3.de!io.xs3.de!news.jacob-sparre.dk!franka.jacob-sparre.dk!pnx.dk!.POSTED.rrsoftware.com!not-for-mail From: "Randy Brukardt" Newsgroups: comp.lang.ada Subject: Re: Ada Successor Language Date: Fri, 29 Jun 2018 15:23:23 -0500 Organization: JSA Research & Innovation Message-ID: References: <5e86db65-84b9-4b5b-9aea-427a658b5ae7@googlegroups.com> <878t7u1cfm.fsf@nightsong.com> <776f3645-ed0c-4118-9b4d-21660e3bba4b@googlegroups.com> <87602fbu2g.fsf@nightsong.com> <87po0mziqt.fsf@nightsong.com> <87fu1izfgs.fsf@nightsong.com> <878t75nwad.fsf@adaheads.home> Injection-Date: Fri, 29 Jun 2018 20:23:23 -0000 (UTC) Injection-Info: franka.jacob-sparre.dk; posting-host="rrsoftware.com:24.196.82.226"; logging-data="1927"; mail-complaints-to="news@jacob-sparre.dk" X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5931 X-RFC2646: Format=Flowed; Response X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.7246 Xref: reader02.eternal-september.org comp.lang.ada:53446 Date: 2018-06-29T15:23:23-05:00 List-Id: "Alejandro R. Mosteo" wrote in message news:pgqas8$mjm$1@dont-email.me... > On 23/06/2018 21:21, Jacob Sparre Andersen wrote: >> Dmitry A. Kazakov wrote: >> >>> 5. No proper separation of interface and implementation. If you used >>> Ada generics you would know that successful compilation of a generic >>> body means little. Instantiation can always fail even if all formal >>> parameters match. The compiler must look into the body not just for >>> the sake of optimization and representation, but for validity of >>> instantiation, just like in C++. A macro is a macro. >> >> If the compilation of a generic succeeds, then any instantiation with >> actuals matching the formal generic parameters have to succeed, no >> matter what's in the implementation of the generic. >> >> If that somehow isn't the case in the very newest version of the >> standard, then the ARG has messed up, and I doubt that. > > See this one, which is the case that bit me recently: > > procedure Blah is > > generic > type Something is private; > package Duh is type Meh is new Something; end Duh; > > type Oh is tagged null record; > > package Ouch is new Duh (Oh); > > begin > null; > end Blah; This can be fixed by moving the derived type to the private part. (It's the case that causes all of those exceptional rules in the RM "This legality rule is also enforced in the private part" -- the rule for the derived type is the only known case where that boilerplate rule is *not* needed.) Randy.