comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Equivalent of dynamic_cast (downcast) for tagged types
Date: Fri, 28 Jan 2011 18:12:20 -0600
Date: 2011-01-28T18:12:20-06:00	[thread overview]
Message-ID: <ihvm19$6in$1@munin.nbi.dk> (raw)
In-Reply-To: 1phnecgw6ckgv.1vm12emlufu5b.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message 
news:1phnecgw6ckgv.1vm12emlufu5b.dlg@40tude.net...
...
> Yes, it is wrong (language design). The operation is primitive even if
> invisible in *some* contexts. It means that there might exist other
> contexts where two operations would conflict. Furthermore, Ada designers
> tried (and expectedly failed) to ensure that "multiple inheritance" always
> override.

I have no idea as to what you are talking about here. The inheritance rules 
haven't changed significantly since Ada 95 (there is a tweak in Ada 2012 
which will help alievate this problem when it is unintentional). And 
multiple inheritance has nothing whatsoever to do with it. IMHO, MI is a 
large cannon whose primary purpose is to blow off limbs. :-) Don't do it.

Remember that a lot more goes into what is overriding than just the names of 
operations; it also depends on the profiles and visibility. Just thinking 
about names always gets you into trouble when thinking about Ada.

And, regardless of whether there is a language design flaw, there is no 
chance that this would change. It would break too much existing code. 
Moreover, I think that what you are talking about is actively harmful. Claw, 
for instance, uses the current rules to have implementation operations that 
are dispatching, but that clients cannot override in any circumstances. (If 
they did, Claw would likely fall over in a heap, causing a debugging and 
support nightmare.)

                                         Randy.





  reply	other threads:[~2011-01-29  0:12 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-27 15:46 Equivalent of dynamic_cast (downcast) for tagged types Maciej Sobczak
2011-01-27 16:18 ` Dmitry A. Kazakov
2011-01-27 17:10   ` J-P. Rosen
2011-01-27 17:35     ` Dmitry A. Kazakov
2011-01-27 22:49     ` Maciej Sobczak
2011-01-27 17:50   ` Georg Bauhaus
2011-01-27 22:35   ` Maciej Sobczak
2011-01-28  5:07     ` Yannick Duchêne (Hibou57)
2011-01-28  9:16     ` Dmitry A. Kazakov
2011-01-28 13:11       ` AdaMagica
2011-01-28 14:13         ` Dmitry A. Kazakov
2011-01-28 23:51           ` Randy Brukardt
2011-01-29  0:55             ` Adam Beneschan
2011-01-28 16:44       ` Adam Beneschan
2011-01-28 17:21         ` Dmitry A. Kazakov
2011-01-29  0:12           ` Randy Brukardt [this message]
2011-01-29  8:47             ` Dmitry A. Kazakov
2011-01-28 17:33         ` Adam Beneschan
2011-01-28 15:13     ` Maciej Sobczak
2011-01-28 17:47       ` Robert A Duff
2011-01-28 22:04         ` Maciej Sobczak
2011-01-30 20:22           ` Stephen Leake
2011-01-31  9:04             ` AdaCore, user community and communication channels Maciej Sobczak
2011-01-31 10:42               ` Georg Bauhaus
2011-01-27 19:33 ` Equivalent of dynamic_cast (downcast) for tagged types Adam Beneschan
replies disabled

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