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,d10596e187e90822 X-Google-Attributes: gid103376,public From: Tucker Taft Subject: Re: Private Children Date: 1999/06/21 Message-ID: <376E70A5.F77E558D@averstar.com>#1/1 X-Deja-AN: 492168461 Content-Transfer-Encoding: 7bit Sender: news@inmet.camb.inmet.com (USENET news) X-Nntp-Posting-Host: houdini.burl.averstar.com References: <7klja3$c0p$1@nnrp1.deja.com> Content-Type: text/plain; charset=us-ascii Organization: AverStar (formerly Intermetrics) Burlington, MA USA Mime-Version: 1.0 Newsgroups: comp.lang.ada Date: 1999-06-21T00:00:00+00:00 List-Id: Ted Dennison wrote: > > In article , > Matthew Heaney wrote: > > Can a public child package with its private sibling? > > > > Almost exactly one month ago, I posted the exact same question. > Go to deja.com and search for a thread titled "Children of private > compilation units" to see the discussion. > > As I remember, it went something like this: Gnat doesn't accept it, and > Robert Dewar says its not legal Ada. ObjectAda and GreenHills do accept > it, and Tucker Taft says it *is* legal Ada. I offered to send in a bug > report to the appropriate vendor, if a consensus could be reached on > which one was in error. Currenly there appears to be no such consensus. No, this was a different issue. It had to do with whether a specless subprogram was considered a spec or a body. Bodies are allowed to "with" private siblings, specs are not. In this case, the ultimate consensus position, based on AARM readings, is that a specless subprogram is treated like a "spec" for the purposes of this rule, and may not "with" a private sibling. To answer the question posed by this new question, the answer given by Dale was correct, that private children provide "compilation privacy." If you want to allow something to be "with"ed by public children's specs, but contain content that is only visible to the private part of the child's spec, the following idiom works: package Mostly_Private is private ... -- Declarations visible only in private part of other public ... -- siblings end Mostly_Private; That is, put the entire set of declarations in the private part of a public child. > T.E.D. -- -Tucker Taft stt@averstar.com http://www.averstar.com/~stt/ Technical Director, Distributed IT Solutions (www.averstar.com/tools) AverStar (formerly Intermetrics, Inc.) Burlington, MA USA