From: Dmitry A. Kazakov <mailbox@dmitry-kazakov.de>
Subject: Re: Extension of non-limited type needs limited component
Date: Thu, 14 Nov 2002 15:27:11 +0100
Date: 2002-11-14T15:27:11+01:00 [thread overview]
Message-ID: <3vb7tug4h99mmalcn0l5ul18cu0ui6i458@4ax.com> (raw)
In-Reply-To: ar052b$8mc$1@s1.read.news.oleane.net
On Thu, 14 Nov 2002 13:33:07 +0100, "Jean-Pierre Rosen"
<rosen@adalog.fr> wrote:
>"Mike" <michael.jackson5@virgin.net> a �crit dans le message news:
>2dbd76f3.0211140126.5d233e41@posting.google.com...
>> How can assignment by upcasting the extended type possibly affect the
>> limited component?
>>
>Consider:
>
> X : T'class := Some_Dynamic_Function (1);
> Y : T'class := Some_Dynamic_Function (2);
>begin
> X := Y;
>
>At compile time, we know nothing about the specific type of the values in X
>and Y, but assuming that T is not limited, the assignment is allowed. If X
>and Y happen to have different tags at run time, the assignment will raise
>Constraint_Error, but that's all.
>
>If you were allowed to extend T with limited components, you would
>effectively copy the limited components!
An LSP violation to put it short.
Which also raises an interesting question, whether T'Class should
always inherit "non-limitness" of T. Or more generally shouldn't one
have an ability to disallow primitive operations (like ":=" in case of
non-limited->limited mutation)?
Let we allow disallowing, then either
1. ":=" should dispatch in X:=Y to a disallowed operation, thus raise
an exception and so refuse to copy the limited components.
2. ":=" is class-wide in the right parameter, then it will dispatch
somewhere within its body and again an exception will happen if an
attempt to copy a limited component will be made..
---
Regards,
Dmitry Kazakov
www.dmitry-kazakov.de
next prev parent reply other threads:[~2002-11-14 14:27 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-11-13 10:03 Extension of non-limited type needs limited component Mike
2002-11-13 12:06 ` Jean-Pierre Rosen
2002-11-14 9:26 ` Mike
2002-11-14 11:43 ` David C. Hoos, Sr.
2002-11-14 12:33 ` Jean-Pierre Rosen
2002-11-14 14:27 ` Dmitry A. Kazakov [this message]
2002-11-14 19:25 ` Randy Brukardt
2002-11-15 10:04 ` Dmitry A. Kazakov
2002-11-15 22:09 ` Robert A Duff
2002-11-16 12:39 ` Dmitry A. Kazakov
2002-11-16 16:15 ` Robert A Duff
2002-11-17 11:14 ` Dmitry A. Kazakov
2002-11-17 12:26 ` Dale Stanbrough
2002-11-18 20:33 ` Randy Brukardt
2002-11-18 21:48 ` Eric
2002-11-19 14:38 ` Eric
2002-11-15 21:41 ` Robert A Duff
2002-11-16 3:54 ` Randy Brukardt
2002-11-15 0:30 ` Robert A Duff
2002-11-15 10:22 ` Dmitry A. Kazakov
2002-11-15 21:56 ` Robert A Duff
2002-11-16 12:39 ` Dmitry A. Kazakov
2002-11-14 23:39 ` Robert A Duff
2002-11-15 21:51 ` Mike
2002-11-13 14:28 ` Robert A Duff
2002-11-14 9:33 ` Mike
2002-11-14 9:35 ` Lutz Donnerhacke
2002-11-14 21:41 ` Robert A Duff
-- strict thread matches above, loose matches on Subject: below --
2002-11-15 10:47 Grein, Christoph
2002-11-15 12:12 ` Dmitry A. Kazakov
2002-11-15 13:29 ` Jean-Pierre Rosen
2002-11-15 14:34 ` Dmitry A. Kazakov
2002-11-15 21:26 ` Robert A Duff
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox