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 X-Received: by 2002:a5e:de06:: with SMTP id e6-v6mr8961698iok.8.1532552236765; Wed, 25 Jul 2018 13:57:16 -0700 (PDT) X-Received: by 2002:aca:de07:: with SMTP id v7-v6mr133973oig.5.1532552236614; Wed, 25 Jul 2018 13:57:16 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!feeder4.usenet.farm!feed.usenet.farm!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!d7-v6no140162itj.0!news-out.google.com!k71-v6ni2864itk.0!nntp.google.com!d7-v6no140157itj.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Wed, 25 Jul 2018 13:57:16 -0700 (PDT) In-Reply-To: <1392b483-af72-4dbe-ad51-bd703405b7a8@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=47.185.195.62; posting-account=zwxLlwoAAAChLBU7oraRzNDnqQYkYbpo NNTP-Posting-Host: 47.185.195.62 References: <40d568da-4715-42de-8e28-98da39a5c974@googlegroups.com> <34f499f7-020f-4dcc-adad-0ab1113386d1@googlegroups.com> <9d69e7b5-6b2d-4607-9f7b-affa78c41620@googlegroups.com> <41c711cb-0300-4a41-93d3-e69297ae1945@googlegroups.com> <42de4aa3-9e7c-44b8-aa84-712cc7ce03c6@googlegroups.com> <9b6b6f10-5956-4a19-83f5-c1c015c62602@googlegroups.com> <8720f70a-59b1-4297-b2fc-78804ec88b7b@googlegroups.com> <756cb66b-1ef8-4d9e-b679-118b6c59e89c@googlegroups.com> <1392b483-af72-4dbe-ad51-bd703405b7a8@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <3eebe2fb-f066-4248-9b2f-1db32497fd82@googlegroups.com> Subject: Re: Visibility of Indexing aspects From: "Dan'l Miller" Injection-Date: Wed, 25 Jul 2018 20:57:16 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Xref: reader02.eternal-september.org comp.lang.ada:53962 Date: 2018-07-25T13:57:16-07:00 List-Id: On Wednesday, July 25, 2018 at 2:58:44 PM UTC-5, AdaMagica wrote: > Much ado about nothing. >=20 > The writer of this code erroneously put things in the private part which = should have been public. There is a compiler bug leaking from privacy which= seduced the writer into thinking that his wrong code is correct. >=20 > The RM is very precise about this, see the references in this thread. >=20 > Love's Labours Lost with any further discussion. In other words, I made an insightful good point about Ada failing (in that = vicinity) to live up to a key portion of its core mission/reason-for-existe= nce from Day One: the ability to keep private portions of a design private= by not forcing public declarations of portions of the design that the desi= gner overtly intends to be kept private. The response to my insightful goo= d point about Ada embarrassingly failing (in this portion) to live up to on= e of its fundamental goals (i.e., encapsulation): Shut it down! Shut it d= own! Speak no more about this topic! Bury it! Nothing to see here; move = along! https://www.youtube.com/watch?v=3DpdFl__NlOpA&frags=3Dpl%2Cwn This so-called =E2=80=9Csevere compiler bug=E2=80=9D is a highly useful sof= tware-engineering usecase of keeping private portions of the design private= instead of forcibly dragging source code up to public for no good reason i= n the design. The gratuitous publicizing of those OP's private declaration= s of {Reference, Reference_Holder, Container_Array, ...} opens those gratui= tously-publicized declarations up to misuse and abuse by users of the packa= ge, in contravention of Steelman requirements 3-5A and 3-5B. The designer of OP's package wants to evoke the Variable_Indexing for users= of the package without permitting the users of the package to directly use= /misuse/abuse {Reference, Reference_Holder, Container_Array, ...}. Steelman 3-5A clearly states =E2=80=9CAn encapsulation may contain declarat= ions of =E2=80=A2=E2=80=A2anything=E2=80=A2=E2=80=A2 (including the data el= ements and operations comprising a type) that is definable in programs.=E2= =80=9D Variable_Indexing clearly is a set of operations comprising a type. Steelman 3-5B clearly states =E2=80=9CAn encapsulation may be used to inhib= it external access to implementation properties of the definition. In parti= cular, it shall be possible to prevent external reference to =E2=80=A2=E2= =80=A2any declaration=E2=80=A2=E2=80=A2 within the encapsulation including = automatically defined operations such as type conversions and equality. Def= initions that are made within an encapsulation and are =E2=80=A2=E2=80=A2ex= ternally accessible=E2=80=A2=E2=80=A2 may be renamed before use outside the= encapsulation.=E2=80=9D So the question is: how does the _LRM_ live up to Steelman 3-5B's requirem= ent for =E2=80=9C=E2=80=A2any=E2=80=A2 declaration=E2=80=9D for =E2=80=9Cau= tomatically defined operations=E2=80=9D (e.g., Variable_Indexing) to be mad= e =E2=80=9C=E2=80=A2externally accessible=E2=80=A2=E2=80=9D in the public p= art of the package by being =E2=80=9Crenamed before use outside=E2=80=9D th= at private part of the package? It seems that OP's/GNAT's =E2=80=9Csevere = bug=E2=80=9D comes far closer to living up to the letter & spirit of Steelm= an 3-5B's explicit demand there than the current wording of the _LRM_ that = seems to force those private declarations of {Reference, Reference_Holder, = Container_Array, ...} to be gratuitously publicized. The _LRM_'s forcing of {Reference, Reference_Holder, Container_Array, ...} = to be public declarations instead of OP's private declarations seems to be = itself a crystal-clear =E2=80=9Csevere noncompliance=E2=80=9D with Steelman= 3-5A's =E2=80=9C=E2=80=A2any=E2=80=A2 declaration =E2=80=A6 including =E2= =80=A2automatically defined=E2=80=A2 operations=E2=80=9D intersecting with = Steelman 3-5B's =E2=80=9C=E2=80=A2=E2=80=A2any declaration=E2=80=A2=E2=80= =A2 =E2=80=A6 including automatically defined operations =E2=80=A6 made =E2= =80=A6 =E2=80=A2=E2=80=A2externally accessible=E2=80=A2=E2=80=A2 =E2=80=9D.