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-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,af3dada69080e420,start X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-06-22 07:50:07 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!colt.net!news.tele.dk!news.tele.dk!small.news.tele.dk!fu-berlin.de!uni-berlin.de!dialin-145-254-036-211.arcor-ip.NET!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Interesting effects in array renaming Date: Sun, 22 Jun 2003 16:52:22 +0200 Organization: At home Message-ID: Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: dialin-145-254-036-211.arcor-ip.net (145.254.36.211) Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit X-Trace: fu-berlin.de 1056293404 26366455 145.254.36.211 (16 [77047]) User-Agent: KNode/0.7.1 Xref: archiver1.google.com comp.lang.ada:39564 Date: 2003-06-22T16:52:22+02:00 List-Id: ---------- test.adb with Ada.Text_IO; use Ada.Text_IO; procedure Test is type Some_Array is array (Integer range <>) of Integer; procedure Foo (X : Some_Array) is subtype Constrained is Some_Array (1..X'Length); XX : Constrained renames X; begin Put_Line ( "XX'Range:" & Integer'Image (XX'First) & ".." & Integer'Image (XX'Last) & ", Constrained'Range:" & Integer'Image (Constrained'First) & ".." & Integer'Image (Constrained'Last) ); end Foo; Object : Some_Array (-3..2) := (-3, -2, -1, 0, 1, 2); begin Foo (Object); end Test; ---------- test.adb Surprisingly the above produces different ranges for XX and its declared subtype. Isn't something wrong here? I would expect either 1. XX'Range = Constrained'Range and indices are shifted or 2. Raising Constraint_Error while renaming. How else could the compiler remove range checks for X : Array_Subtype ... for I in Array_Subtype'Range loop X (I) ... -- Regards, Dmitry A. Kazakov www.dmitry-kazakov.de