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=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,9fb8e2af320d5b3e X-Google-Attributes: gid103376,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!newsfeed.arcor.de!newsspool2.arcor-online.net!news.arcor.de.POSTED!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: Bus error Newsgroups: comp.lang.ada User-Agent: 40tude_Dialog/2.0.15.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <0367891DA5DA7E408D42A860FA002F44B0CC48@sma2901.cr.eurocopter.corp> <1l4yqvxoid4n1.1u8eo4oo8ml4m$.dlg@40tude.net> <4685280c$0$14869$9b4e6d93@newsspool4.arcor-online.net> Date: Fri, 29 Jun 2007 22:07:08 +0200 Message-ID: NNTP-Posting-Date: 29 Jun 2007 22:06:28 CEST NNTP-Posting-Host: a1226a66.newsspool1.arcor-online.net X-Trace: DXC=SO@=Tnec;]7i6K;>iZ]763ic==]BZ:af>4Fo<]lROoR1Fl8W>\BH3Y2o\dQ^dKRKa8DNcfSJ;bb[5IRnRBaCdP3 On Fri, 29 Jun 2007 17:44:22 +0200, Georg Bauhaus wrote: > Dmitry A. Kazakov wrote: >> On Fri, 29 Jun 2007 11:35:28 +0200, Duncan Sands wrote: >> >>> in Ada 95 you could do >>> >>> X : T renames Factory; >> >> Yes, you're right. It should be illegal. Semantically it is same as >> >> X : Integer renames 1; -- Illegal > > I don't think that renaming an object is the same as renaming > a number literal because the literal isn't declared anywhere. > Wheras I could say that a returned object is declared as part > of the function declaration. Oh, if that is a problem then take this instead: X : Integer renames -1; -- Still illegal, though not a literal But clearly your argument is nonsensical, literal is a syntactic element, of which semantics is as much object as any of any other expression. It would be a very perverse idea to try to draw a line between literals and non-literals. Note also that Ada's renaming has conceptually little to do with objects. Consider: X : T; X : T renames X; -- Illegal though the "object" is obviously same. Same object, same name, what was wrong? >> function Very_Positive return Integer is >> begin >> return -1; >> end Very_Positive; >> >> Oops : Positive renames Very_Positive; -- This is OK! > > So is > > if 42 not in Boolean'pos(false) .. Boolean'pos(true) then > raise Constraint_Error; > end if; You missed the point. The renaming in my example shall *not* raise Constraint_Error. It is a clear language design fault. Renaming is completely broken in Ada. It creates new objects, it violates contracts, it introduces names conflicts. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de