From mboxrd@z Thu Jan 1 00:00:00 1970 Path: eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Blady Newsgroups: comp.lang.ada Subject: Re: Renaming primitives. Date: Thu, 11 Jan 2024 11:09:38 +0100 Organization: A noiseless patient Spider Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Thu, 11 Jan 2024 10:09:39 -0000 (UTC) Injection-Info: dont-email.me; posting-host="3c51d50ffdb2a9483b64bc8ff7220ce6"; logging-data="3107590"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+qFKP0z9Z70Q6iFlTYCx9F" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:Cidk63tARXqr7x2bbWhHky437j4= In-Reply-To: Content-Language: fr, en-US Xref: news.eternal-september.org comp.lang.ada:65984 List-Id: Le 11/01/2024 à 03:18, Randy Brukardt a écrit : > "Blady" wrote in message > news:unls1j$2f0up$3@dont-email.me... >> Is a procedure renaming equivalent to a simple call? > > General point: "Equivalent" is never true in programming language design. If > construct A is equivalent in every way to construct B, then they have to be > the same construct. > > For instance, in your example below, the two subprogram declarations have > different identifiers which have different visibility (two declarations > cannot be at exactly the same place), so there is at least one way that > they're not equivalent. > > So, if you want to talk about "equivalence", you need to qualify that by > what properties you are interested in. Well, I hadn't find a better word :-( > ... >> What is happening if My_Generic_Handler change? > > Nothing. The names in a renaming are evaluated when the renaming is > declared. If there are parts that could change, the compiler has to save the > values at the point of the renaming. That's true for all forms of renaming > (some names, like package names, can't change meaning so the example isn't > possible, of course). Yet, the code: My_Log_3 ("Hei"); My_Generic_Handler := My_Full_Handler'Access; My_Log_3 ("Hei"); gives: Hei Full Hei I thought that was correct, wasn't it? GNAT issue ? > ... >> I got: >> test_20240110_renproc.adb:47:14: error: too many arguments in call to >> "log" >> >> Is it a correct or a GNAT issue? > > Looks like a bug to me. Not too surprising, though, this sort of thing is a > special case in a compiler and often added to pass an ACATS test or user bug > report. Such fixes can often not be fully general. Thanks, I'll report it. Pascal.