comp.lang.ada
 help / color / mirror / Atom feed
From: Ludovic Brenta <ludovic@ludovic-brenta.org>
Subject: Re: Brain bug or GNAT bug?
Date: Thu, 01 Mar 2007 01:11:38 +0100
Date: 2007-03-01T01:11:38+01:00	[thread overview]
Message-ID: <87irdlx1ol.fsf@ludovic-brenta.org> (raw)
In-Reply-To: C20BC459.9A6B4%yaldnif.w@blueyonder.co.uk

"(see below)" writes:

> Using GNAT GPL 2006 (PPC/Darwin), I instantiate:
>
>    generic
>    
>       type modular is mod <>;
>    
>    package try is
>    
>       type DT1 (the_size : modular)  is limited private;
>    
>    -- subtype bounded is modular;
>       subtype bounded is modular range 1..9;
>       type DT2 (the_size : bounded)  is limited private;
>    --                         |
>    -- >>> subtype must be compatible with parent discriminant
>
>       function is_empty (the_data : DT2) return Boolean;
>    
>    private
>    
>       type a_thing is null record;
>       type a_ptr   is access a_thing;
>       
>       type a_ptr_array is array (modular range <>) of a_ptr;
>    
>       type DT1 (the_size : modular) is
>          record
>             things : a_ptr_array (1 .. the_size);
>          end record;
>    
>       type DT2 (the_size : bounded)  is new DT1(the_size);
>
>    end try;
>
> and I get the error message commented-out at line 11.
>
> If I substitute the declaration at line 9 for that at line 10,
> the test program compiles and runs correctly.
>
> Am I blundering here, or is this a GNAT bug?

Per ARM 3.7(15), the types of DT1.the_size and DT2.the_size must be
statically compatible.  In other words, you must guarantee at compile
time that "the_size" is in the range of type "modular".  Because
modular's range is not known at compile time but bounded's is, no such
guarantee exists.

If you remove the "range" constraint on subtype "bounded", then the
range for "bounded" and the range of "modular" are known at compile
time to be identical, so all is well.

What are ou trying to achieve?

-- 
Ludovic Brenta.



  reply	other threads:[~2007-03-01  0:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-28 23:44 Brain bug or GNAT bug? (see below)
2007-03-01  0:11 ` Ludovic Brenta [this message]
2007-03-01  0:39   ` (see below)
2007-03-01  5:07     ` Jeffrey R. Carter
2007-03-01  8:45     ` Ludovic Brenta
replies disabled

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