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 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!nntp-feed.chiark.greenend.org.uk!ewrotcd!newsfeed.xs3.de!io.xs3.de!news.jacob-sparre.dk!franka.jacob-sparre.dk!pnx.dk!.POSTED.109.56.187.79.mobile.3.dk!not-for-mail From: Jacob Sparre Andersen Newsgroups: comp.lang.ada Subject: Re: In mode parameter in an assignment statement Date: Sat, 13 Oct 2018 07:52:51 +0200 Organization: JSA Research & Innovation Message-ID: <87sh1as898.fsf@jacob-sparre.dk> References: <82fdea5d-b9b6-4f1e-a45f-ee0ff9f55946@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: franka.jacob-sparre.dk; posting-host="109.56.187.79.mobile.3.dk:109.56.187.79"; logging-data="10458"; mail-complaints-to="news@jacob-sparre.dk" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux) Cancel-Lock: sha1:Cyauwtz3uznJ89nhiXVKMfjIT8o= Xref: reader02.eternal-september.org comp.lang.ada:54558 Date: 2018-10-13T07:52:51+02:00 List-Id: Anh Vo writes: > -- ... > > ------------------ > -- Compute_Data -- > ------------------ > > procedure Compute_Data (Region : Mapped_Region) is > Data_Shift : constant Storage_Offset := > Storage_Offset (Region.User_Offset - Region.System_Offset); > begin > if Region.User_Size = 0 then > Region.Data := Empty_String'Address; > elsif Region.Mapped then > Region.Data := Region.Mapping.Address + Data_Shift; > else > Region.Data := Region.Buffer.all'Address + Data_Shift; > end if; > end Compute_Data; > > end GNATCOLL.Mmap; > > The above code is the tail end of package gnatcoll-mmap.adb. > > I thought it should be rejected during compilation because in mode > parameter is not allowed in an assignment statement. But, it was > compiled successfully under GNAT obviously. > > What did I miss? Thanks in advance. Probably that there is an access type involved. If "Mapped_Region" is an access type, then "Region.Data" could be a short-hand for "Region.all.Data". Greetings, Jacob -- "I've got _plenty_ of common sense!" "I just choose to ignore it."