comp.lang.ada
 help / color / mirror / Atom feed
From: Damien Carbonne <damien.carbonne@free.fr>
Subject: Re: GNAT GPL 2009 - issue with floating points?
Date: Sat, 10 Oct 2009 00:15:35 +0200
Date: 2009-10-10T00:15:36+02:00	[thread overview]
Message-ID: <4acfb607$0$412$426a34cc@news.free.fr> (raw)
In-Reply-To: <6d8f169d-5dc8-465c-9368-be91efc2de0f@v15g2000prn.googlegroups.com>

Adam Beneschan a �crit :
> On Oct 9, 1:36 pm, Damien Carbonne <damien.carbo...@free.fr> wrote:
>> Hi,
>>
>> When compiling the following sample code with GNAT GPL 2009 on Linux:
>>
>> generic
>>     type Real is digits <>;
>> package Pack04 is
>>     Size1 : constant := Real'Size;
>>     Size2 : constant Integer := Real'Size;
>> end Pack04;
>>
>> I get this:
>>
>> -- pack04.ads:4:24: non-static expression used in number declaration
>> -- pack04.ads:4:28: size attribute is only static for scalar type (RM
>> 4.9(7,8))
>>
>> RM 3.5(1): "scalar types comprise enumeration types, integer types, and
>> real types."
>>
>> RM 3.5.6 (1): "Real types provide approximations to the real numbers,
>> with relative bounds on errors for floating point types, and with
>> absolute bounds for fixed point types."
> 
> Did you read the RM reference that the GNAT error message pointed you
> to???
Yes I did !
It is very possible that this code is wrong (this is not really the 
problem here), but why does the message say that "size attribute is only 
static for scalar types" as an explanation, when the type the size 
attribute is applied to is precisely a scalar ! At least, I thought that 
floating points were scalars in Ada till this evening !
I read this message as: "As Real is a scalar type, I can apply size 
attribute to Real and obtain a static expression." This reading is 
apparently wrong.
Do you mean that the formal generic parameter Real is not a scalar?
I'm certainly no an Ada expert, but I really find the message confusing.
> 
> Also read 4.9(26).
> 
>> So Real is supposed to be a scalar!
>>
>> Is this a problem with (misleading) message or with (effectively) wrong
>> code?
> 
> The code is wrong.
Sure, but I still find the message misleading. Isn't Real a scalar type?
> 
> And anyway, the declaration of Size2 is legal (even though the
> declaration of Size1 isn't), so there's no problem.
The problem is that even if Size2 is a correct declaration, there are 
other latter issues with its use, not shown in the sample code.
> 
>                              -- Adam
> 



  reply	other threads:[~2009-10-09 22:15 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-09 20:36 GNAT GPL 2009 - issue with floating points? Damien Carbonne
2009-10-09 21:06 ` Adam Beneschan
2009-10-09 22:15   ` Damien Carbonne [this message]
2009-10-09 22:44     ` Ludovic Brenta
2009-10-10  6:33       ` Damien Carbonne
2009-10-10 14:55       ` Samuel Tardieu
2009-10-10 16:12         ` Ludovic Brenta
2009-10-10 16:38         ` Damien Carbonne
2009-10-09 23:26     ` Adam Beneschan
2009-10-10  6:39       ` Damien Carbonne
2009-10-10  7:16         ` Dmitry A. Kazakov
2009-10-11  9:33           ` Dirk Herrmann
2009-10-11 10:27             ` Dmitry A. Kazakov
2009-10-12 23:26               ` 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