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: Incomplete type generic formal interactions with Implicit_Dereference Date: Mon, 22 Jan 2018 19:08:57 -0600 Organization: JSA Research & Innovation Message-ID: References: <21b6b4fb-4648-419e-ae6c-c361d54eaa2f@googlegroups.com> Injection-Date: Tue, 23 Jan 2018 01:08:58 -0000 (UTC) Injection-Info: franka.jacob-sparre.dk; posting-host="rrsoftware.com:24.196.82.226"; logging-data="3782"; 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; Original X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.7246 Xref: reader02.eternal-september.org comp.lang.ada:50060 Date: 2018-01-22T19:08:57-06:00 List-Id: "Jere" wrote in message news:21b6b4fb-4648-419e-ae6c-c361d54eaa2f@googlegroups.com... ... > Part of me thinks that since Some_Type is incomplete, that Ada wouldn't > allow for an Implicit_Dereference declared on it. I guess it depends on > if it is meant to be evaluated in the compilation of the generic itself > or at the point at which the function is called. > > Anyone have any thoughts on this? I don't think we ever considered this case. But I think it is OK. Specifically, 4.1.5(6/3) says that a generalized reference denotes a view equivalent to that of a dereference of the reference discriminant of the reference object. Thus, any Legality Rules that apply to the dereference of the discriminant apply to the generalized reference as well. For instance, this includes any accessibility rules (which was an important part of the design, as the accessibility rules prevent the access value from living longer than the object containing the access discriminant). As such, any other Legality Rules, like the ones about incomplete types would also apply. Specifically, 3.10.1(10/3): "A prefix that denotes an object shall not be of an incomplete view." So a use of an Implicit_Dereference wherever the type is incomplete would usually be illegal (there are a few ways that a dereference of an incomplete view can be used, mainly to be passed as a parameter to some routine with an access-to-incomplete parameter). But it would be OK where the type has been completed (in this case, outside of the generic instantiation, the way you intended to use this). This sounds like what you intended. Randy.