From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Will "renames" increase program size?
Date: Thu, 16 Jun 2011 14:15:23 +0200
Date: 2011-06-16T14:15:23+02:00 [thread overview]
Message-ID: <wkvzuhs63t87.1j91qywfowmtc.dlg@40tude.net> (raw)
In-Reply-To: 4bdd2495-fb00-4aa7-89bd-910dfefa3704@i4g2000yqg.googlegroups.com
On Thu, 16 Jun 2011 03:18:14 -0700 (PDT), AdaMagica wrote:
>> procedure Shame is
>> � �type T is array (Integer range <>) of Integer;
>> � �A : T := (0 => 0, 1 => 1);
>> � �subtype S is T (1..2);
>> � �B : S renames A;
>> begin
>> � �Put_Line (Integer'Image (B (0))); -- Surprise, 0 is a legal index of S!
>> end Shame;
>
> Yes, agreed, that's annoying and confusing. Perhaps such a renaming
> should be forbidden. Don't know what other consequences such a rule
> would have, which other rules would have to be adapted. Think of
> generics... (I know you dislike generics.)
(:-))
I think it would be difficult to forbid, because renaming that changes view
is extremely useful for tagged types. E.g.
if X in S'Class then
declare
Y : S'Class renames S'Class (X);
begin
I always wished a cleaner and safer construct for this, then we could
indeed disable renaming to a view altogether.
Luckily, this one is illegal:
type T is access all Integer;
subtype S is not null T;
P1 : T := null;
P2 : S renames S (P1);
>> Regarding the visibility rules, the design bug is that the new name of a
>> thing shall not hide any other names of it in any context. In the example
>> above P1.End_Error should not have hidden P2.End_Error. (I don't know why
>> this has not been fixed long time ago, because it would be a really minor
>> language change, which would not break any existing code).
>
> You request that resolution would not be via names, but via entities.
> Thus when there are several homonymes visible at the same time, the
> compiler would have to check whether all these names actually specify
> the same entity.
Yes.
> Don't know whether this would make overload
> resolution more difficult.
Maybe it would not, because the actions need only to be undertaken when a
conflict is detected. Then the compiler would weed the list of conflicting
names of same entities. That should not even slower the compilation
(provided the feature would not be abused).
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2011-06-16 12:15 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-15 2:10 Will "renames" increase program size? Adrian Hoe
2011-06-15 5:37 ` Randy Brukardt
2011-06-15 9:11 ` AdaMagica
2011-06-15 11:26 ` Yannick Duchêne (Hibou57)
2011-06-15 11:24 ` Yannick Duchêne (Hibou57)
2011-06-15 13:15 ` Dmitry A. Kazakov
2011-06-16 6:59 ` AdaMagica
2011-06-16 8:59 ` Dmitry A. Kazakov
2011-06-16 10:18 ` AdaMagica
2011-06-16 12:15 ` Dmitry A. Kazakov [this message]
2011-06-16 23:22 ` Randy Brukardt
2011-06-16 15:40 ` Adam Beneschan
2011-06-16 16:33 ` Dmitry A. Kazakov
2011-06-16 17:42 ` Adam Beneschan
2011-06-16 18:53 ` Dmitry A. Kazakov
2011-06-16 23:39 ` Randy Brukardt
2011-06-17 6:53 ` Dmitry A. Kazakov
2011-06-18 0:02 ` Randy Brukardt
2011-06-18 7:54 ` Dmitry A. Kazakov
2011-06-18 8:58 ` Yannick Duchêne (Hibou57)
2011-06-18 10:05 ` Dmitry A. Kazakov
2011-06-18 12:49 ` Yannick Duchêne (Hibou57)
2011-06-18 22:44 ` Randy Brukardt
2011-06-22 0:56 ` Shark8
2011-06-15 22:21 ` anon
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox