From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Assignment access type with discriminants
Date: Wed, 22 Mar 2023 10:19:28 +0100 [thread overview]
Message-ID: <tveh6u$ihpu$1@dont-email.me> (raw)
I stumbled on a curious fact.
The value of an object with a discriminant can be changed to a value
with a different discriminant if the type's discriminants are defaulted.
Right?
Wrong! Not through an access type!
procedure Test is
type F is (F1, F2, F3);
type Foo (K : F := F1) is record
case K is
when F1 =>
X1 : Integer;
when F2 =>
X2 : Float;
when F3 =>
X3 : String (1..2);
end case;
end record;
type Foo_Ptr is access all Foo;
X : aliased Foo;
P : Foo_Ptr := X'Access;
begin
X := (F2, 1.0); -- OK
P.all := (F1, 3); -- Error!
end Test;
Is this a compiler bug or intentional language design? Any language lawyers?
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next reply other threads:[~2023-03-22 9:19 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-22 9:19 Dmitry A. Kazakov [this message]
2023-03-22 9:31 ` Assignment access type with discriminants Björn Lundin
2023-03-22 14:10 ` G.B.
2023-03-23 11:51 ` Dmitry A. Kazakov
2023-03-23 16:53 ` AdaMagica
2023-03-23 18:09 ` Niklas Holsti
2023-03-23 17:04 ` J-P. Rosen
2023-03-23 18:55 ` Niklas Holsti
2023-03-23 19:53 ` Dmitry A. Kazakov
2023-03-24 9:41 ` J-P. Rosen
2023-03-25 8:51 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox