comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Array conversion and bounds
Date: Sun, 15 Apr 2018 15:24:57 +0200
Date: 2018-04-15T15:24:57+02:00	[thread overview]
Message-ID: <pavjra$1f9n$1@gioia.aioe.org> (raw)
In-Reply-To: fjh1bvFq9vhU1@mid.individual.net

On 2018-04-15 15:11, Niklas Holsti wrote:
> On 18-04-15 15:34 , Dmitry A. Kazakov wrote:
>> On 2018-04-15 12:37, Niklas Holsti wrote:
>>> On 18-04-15 12:36 , Dmitry A. Kazakov wrote:
>>>> Do array bounds slide during conversion? Consider this:
>>>>
>>>>    type A is array (Integer range <>) of Whatever;
>>>>    type B is array (Unsigned_32 range <>) of Whatever;
>>>>
>>>>    X : A (-10..-1);
>>>>    Y : B (1..10);
>>>> begin
>>>>    Y := B (X); -- Is this OK?
>>>>
>>>> If bounds slide it must be OK, if bounds do not slide, it must raise
>>>> Constraint_Error.
>>>>
>>>> Any language lawyers?
>>>
>>> I believe the bounds should _not_ slide, because the "target subtype"
>>> of the conversion is type B, which is an _unconstrained_ array subtype.
>>
>> Better to say, they should, but they do not.
> 
> Ok, if I read the RM correctly (and you seem to agree with me) they "do 
> not" slide when the target subtype is unconstrained.

It is an unsafe choice, obviously.

>> Clearly conversions like this should not require resorting to
>> Unchecked_Conversion.
> 
> Is there some reason why you cannot use the constrained-target-subtype 
> method to force sliding?

Considering this example:

    type A is array (Integer range <>) of Whatever;
    type B is array (Unsigned_32 range <>) of Whatever;

    X : A (-1000..-1);
    Y : B (1..200);
begin
    Y (10..19) := B (X (-19..-10));

Do you propose this?

    declare
       subtype BB is B (10..19);
    begin
       Y (10..19) := BB (X (-19..-10));
    end;

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


  reply	other threads:[~2018-04-15 13:24 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-15  9:36 Array conversion and bounds Dmitry A. Kazakov
2018-04-15 10:37 ` Niklas Holsti
2018-04-15 12:34   ` Dmitry A. Kazakov
2018-04-15 13:11     ` Niklas Holsti
2018-04-15 13:24       ` Dmitry A. Kazakov [this message]
2018-04-15 18:21         ` Niklas Holsti
2018-04-15 20:29           ` Dmitry A. Kazakov
2018-04-15 17:55 ` Robert A Duff
2018-04-15 20:15   ` Dmitry A. Kazakov
replies disabled

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