comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Studying and Maintaining GNAT, Is There Any Interest in a New Group?
Date: Fri, 31 Aug 2018 17:51:40 -0500
Date: 2018-08-31T17:51:40-05:00	[thread overview]
Message-ID: <pmcgps$850$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: wcc5zzqtels.fsf@TheWorld.com

"Robert A Duff" <bobduff@TheWorld.com> wrote in message 
news:wcc5zzqtels.fsf@TheWorld.com...
> Shark8 <onewingedshark@gmail.com> writes:
>
>> On Monday, August 27, 2018 at 10:54:48 AM UTC-6, Bill Findlay wrote:
>>> On 27 Aug 2018, Simon Wright wrote:
>>> > And there are bugs in the backend; e.g. currently some problems with
>>> > LTO/Darwin.
>>>
>>> Could you say more about that, Simon?
>>> It might explain some difficulties I have been experiencing.
>
>> Well, one bug that seems to recur frequently is mishandling of RENAMES, 
>> and not obscure renamings either, things like attribute renaming:
>>   Length : Natural renames Some_Array'Length;
>
> That's illegal, because Some_Array'Length denotes a value,
> not an object, so you can't use it like that in an
> object_renaming_declaration.  GNAT correctly detects
> this error.  I don't see any mishandling here.
> Am I missing something?

Probably just that people are very confused about what one can rename. It's 
completely illogical, but as Bob says, it's a language issue and not 
(necessarily) a compiler issue.

For instance:
    Next : Natural renames Natural'Pred(1);
*is* legal, as Pred represents a function, and function results represent 
objects.

Similarly, in Ada 2012:
    Ren1 : Natural renames Func(1); -- Legal.
    Ren2 : Natural renames Natural'(Func(1)); -- Legal.
    Ren3 : Natural renames Natural(Func(1)); -- Illegal!!!

At least Ada 2020 will fix this one. But try this:
     Ren4 : Boolean renames Boolean'(A and B); -- Legal.
     Ren5 : Boolean renames Boolean'(A and then B); -- Illegal.
     Ren6 : Boolean renames "and"(A, B); -- Legal.
     Ren7 : Boolean renames A and B; -- Illegal.

"and" is an operator function here, so it's an object and can be renamed. 
But "and then" is an operation and thus can't be renamed. Ren7 is illegal be 
infix notation is not a "name", so this renaming is illegal syntax.

Note that every one of these renames was illegal in Ada 83. Someone thought 
that it was important to allow Ren1 in Ada 95, and that led to all of these 
bizarre cases.

Anyone who claims they understand what can and cannot be renamed intuitively 
is a liar. :-)

                                              Randy.


  reply	other threads:[~2018-08-31 22:51 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-25 12:27 Studying and Maintaining GNAT, Is There Any Interest in a New Group? patrick
2018-08-25 13:56 ` Dan'l Miller
2018-08-25 16:00   ` patrick
2018-08-25 16:16 ` Luke A. Guest
2018-08-25 17:42   ` patrick
2018-08-25 19:25     ` Simon Wright
2018-08-25 20:24       ` patrick
2018-08-25 21:48         ` Luke A. Guest
2018-08-25 21:53           ` patrick
2018-08-25 22:05             ` Luke A. Guest
2018-08-26 19:54           ` Dan'l Miller
2018-08-26 20:14             ` Dan'l Miller
2018-08-26 22:52             ` Lucretia
2018-08-27  2:38               ` Dan'l Miller
2018-08-27 14:46                 ` Lucretia
2018-08-27 15:42                   ` Dan'l Miller
2018-08-27 21:27               ` Randy Brukardt
2018-08-28  7:26                 ` Dmitry A. Kazakov
2018-08-29  0:16                   ` Randy Brukardt
2018-08-29  8:20                     ` Dmitry A. Kazakov
2018-08-29 21:43                       ` Randy Brukardt
2018-08-30  7:55                         ` Dmitry A. Kazakov
2018-08-30 23:25                           ` Randy Brukardt
2018-08-31  8:48                             ` Dmitry A. Kazakov
2018-08-31 22:42                               ` Randy Brukardt
2018-09-02  8:02                                 ` Dmitry A. Kazakov
2018-09-04 22:18                                   ` Randy Brukardt
2018-08-29  3:02                 ` Paul Rubin
2018-08-29  6:18                   ` Luke A. Guest
2018-08-29 19:00                     ` Paul Rubin
2018-08-30  5:54                       ` Luke A. Guest
2018-08-30  6:29                         ` Paul Rubin
2018-08-27 21:18             ` Randy Brukardt
2018-08-27  9:37           ` Simon Wright
2018-08-27 16:54             ` Bill Findlay
2018-08-27 17:42               ` Shark8
2018-08-31 21:23                 ` Robert A Duff
2018-08-31 22:51                   ` Randy Brukardt [this message]
2018-09-01 19:42                     ` Robert A Duff
2018-09-02  8:04                       ` Dmitry A. Kazakov
2018-09-02 10:11                     ` AdaMagica
2018-09-02 12:10                       ` Jeffrey R. Carter
2018-09-02 14:30                         ` AdaMagica
2018-09-04 22:05                           ` Randy Brukardt
2018-09-01  7:41               ` Simon Wright
2018-09-01 17:27                 ` Bill Findlay
2018-08-27 17:35         ` Shark8
2018-08-25 21:17       ` Luke A. Guest
2018-08-25 23:16       ` Paul Rubin
2018-08-26  8:03         ` Rene
2018-08-26 10:09         ` Simon Wright
2018-08-25 16:43 ` Jeffrey R. Carter
2018-08-25 17:38   ` patrick
2018-08-25 17:39     ` Luke A. Guest
2018-08-25 17:45       ` patrick
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox