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,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 2002:a6b:df08:: with SMTP id w8-v6mr4814088iog.32.1527586276761; Tue, 29 May 2018 02:31:16 -0700 (PDT) X-Received: by 2002:a9d:51d1:: with SMTP id d17-v6mr1197990oth.12.1527586276652; Tue, 29 May 2018 02:31:16 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!news.uzoreto.com!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!u74-v6no6231820itb.0!news-out.google.com!f20-v6ni5945itd.0!nntp.google.com!v8-v6no6263117itc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Tue, 29 May 2018 02:31:16 -0700 (PDT) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=80.139.101.198; posting-account=rmHyLAoAAADSQmMWJF0a_815Fdd96RDf NNTP-Posting-Host: 80.139.101.198 References: <55ce14eb-6b83-4ea0-a550-f9e1410d0b06@googlegroups.com> <51dfb377-1b3e-45ca-a211-158101efe557@googlegroups.com> <090d6eb2-9f52-4471-a22e-ce1bdf457188@googlegroups.com> <90f0f8da-dadd-4341-bc0f-dbda94b0516c@googlegroups.com> <137bcc76-2489-4557-979b-5efeecbd9289@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <209e0a3c-5473-4219-8954-43bd9602442c@googlegroups.com> Subject: Re: Strings with discriminated records From: AdaMagica Injection-Date: Tue, 29 May 2018 09:31:16 +0000 Content-Type: text/plain; charset="UTF-8" Xref: reader02.eternal-september.org comp.lang.ada:52759 Date: 2018-05-29T02:31:16-07:00 List-Id: Am Dienstag, 29. Mai 2018 09:49:20 UTC+2 schrieb Dmitry A. Kazakov: > Yes. Renaming temporary objects is probably a language design bug. It was a consequence of making function results to objects. Before, they were mere values. Objects can be renamed. > renaming is broken in so many ways that one more, one less does not make > much difference. Hm, I only see one lie with renaming: X: constant Integer := -1; Y: Positive renames X; What are the other broken features? > It is best to use rename only where it was originally intended, e.g. Dmitry's list is very good advice. > 1. for renaming long named objects/packages: > > X : T renames A.B.C.D.E.X; > > 2. for renaming view conversions: > > X : T'Class renames T'Class (Y); > > 3. for renaming array/list elements and record members: > > for I in A'Range loop > declare > Current : T renames A (I); > begin > ... > > 4. for resolving name clashes: > > type T is new Integer; > function Integer_Add (Left, Right : Integer) > return Integer renames "+"; -- Going to override, so keep the old > function "+" (Left, Right : Integer) > return Integer renames "+"; -- The new one