From: "J-P. Rosen" <rosen@adalog.fr>
Subject: Re: Question on variant/discriminated records
Date: Thu, 31 Dec 2020 11:52:23 +0100 [thread overview]
Message-ID: <rskah8$85j$1@dont-email.me> (raw)
In-Reply-To: <3c1a2fe9-e8f2-401f-870d-aecd9e0f9c69n@googlegroups.com>
Le 31/12/2020 à 11:38, reinert a écrit :
> Assume the following program and change "y1" to "y".
>
> procedure test3 is
> type options1_Type is (a,b,c);
> type rec1_Type(option1 : options1_Type) is
> record
> x : Float;
> case option1 is
> when a => null;
> when b => y : float;
> when c => y1,z : float;
> end case;
> end record;
> begin
> null;
> end test3;
>
> My compiler does not like this change. I find it not natural to invent
> a new name "y1" instead of "y". What should I do?
>
Yes, it is a rule that identifiers in parallel branches cannot be
identical. And there is a good reason for this: in Ada, when you access
a component, the compiler checks that the component exists, according to
the value of the discriminant. Assume that you write (if V is of type
rec1_type):
V.Y := 1.0;
If both components are named Y, should the discriminant be B or C?
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr
next prev parent reply other threads:[~2020-12-31 10:52 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-31 10:38 Question on variant/discriminated records reinert
2020-12-31 10:52 ` J-P. Rosen [this message]
2020-12-31 12:24 ` reinert
2020-12-31 12:46 ` Gautier write-only address
2020-12-31 12:57 ` reinert
2020-12-31 13:29 ` DrPi
2020-12-31 16:06 ` Gautier write-only address
2020-12-31 15:03 ` Dmitry A. Kazakov
2021-01-01 9:19 ` reinert
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox