comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Legit Warnings or not
Date: Fri, 22 Jul 2011 19:26:59 -0500
Date: 2011-07-22T19:26:59-05:00	[thread overview]
Message-ID: <j0d4gl$oqc$1@munin.nbi.dk> (raw)
In-Reply-To: wccy5zslezc.fsf@shell01.TheWorld.com

"Robert A Duff" <bobduff@shell01.TheWorld.com> wrote in message 
news:wccy5zslezc.fsf@shell01.TheWorld.com...
...
>> The code segment above triggers a warnings message 'creation of
>> "Warned_Person" object may raise Storage_Error' at line 3 as marked.
>> However, no warnings is issued at line 8. The difference between them
>> is default discriminant. I am using GNAT-GPL-2011.
>
> There's a confusing rule in Ada:  If it has defaults, there can be
> unconstrained objects of that type (and also constrained ones).
> If it doesn't have defaults, then all objects must be constrained.
>
> So if you say "X : Warned_Person;", GNAT will allocate space for
> billions of characters (not just 10) because you might assign
> a bigger one (like "X := (Size => 1_000_000, Name => Something)").

Right, but I personally consider this a bug. The bug is in the Ada market 
(and ACATS) in that implementations that do this by default are allowed --  
it's not a bug in the Ada standard or a bug with GNAT (this is commonly 
accepted -- by everyone other than me) behavior.

>> Is this warnings legitimate? If yes, why line 8 is OK. Otherwise,
>> should it be a bug?
>
> It's not a bug.  An object of type Warned_Person might need huge amounts
> of memory, so Storage_Error might well be raised.

And that to me is a bug. It's not that hard to implement on-demand 
allocation if the object turns out to be huge.

I understand the requirements to avoid secondary allocation and the like, 
and it makes perfect sense to me for this behavior to occur when certain 
restrictions are in place. But it doesn't make sense to me for this behavior 
to be the default. It makes Ada less useful than it otherwise would be, and 
often forces programmers to use access types when they otherwise would not 
need them. The fewer explicit access types in a program, the better!!

                                    Randy.







  parent reply	other threads:[~2011-07-23  0:26 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-20 22:30 Legit Warnings or not Anh Vo
2011-07-20 23:16 ` Robert A Duff
2011-07-21 18:43   ` Anh Vo
2011-07-23  0:26   ` Randy Brukardt [this message]
2011-07-23 14:26     ` Robert A Duff
2011-07-21  2:37 ` Jeffrey Carter
2011-07-21  9:50   ` Brian Drummond
2011-07-21 14:39     ` Dmitry A. Kazakov
2011-07-23  0:36       ` Randy Brukardt
2011-07-23  9:03         ` Dmitry A. Kazakov
2011-07-23 11:07           ` Simon Wright
2011-07-23 11:21             ` Dmitry A. Kazakov
2011-07-26 21:25           ` Randy Brukardt
2011-07-27  7:45             ` Dmitry A. Kazakov
2011-07-28  0:37               ` Randy Brukardt
2011-07-28  9:22                 ` Dmitry A. Kazakov
2011-07-28 14:22                   ` Robert A Duff
2011-07-28 14:41                     ` Dmitry A. Kazakov
2011-07-28 15:10                       ` Robert A Duff
2011-07-28 17:05                         ` Dmitry A. Kazakov
2011-07-28 23:32                           ` Randy Brukardt
2011-07-28 23:48                   ` Randy Brukardt
2011-07-29  6:57                     ` Simon Wright
2011-07-29 18:56                       ` Jeffrey Carter
2011-07-30  0:13                       ` Randy Brukardt
2011-07-29  7:41                     ` Dmitry A. Kazakov
2011-07-30  0:17                       ` Randy Brukardt
2011-07-30  8:27                         ` Dmitry A. Kazakov
2011-08-01 22:12                           ` Randy Brukardt
2011-08-02 10:01                             ` Dmitry A. Kazakov
2011-08-02 21:30                               ` Randy Brukardt
2011-08-03  9:01                                 ` Dmitry A. Kazakov
2011-08-03 20:35                                   ` Randy Brukardt
2011-08-04  8:11                                     ` Dmitry A. Kazakov
2011-08-05 23:57                                       ` Randy Brukardt
2011-08-06  8:23                                         ` Dmitry A. Kazakov
2011-08-08 21:30                                           ` Randy Brukardt
2011-07-23 14:32         ` Robert A Duff
2011-07-26 21:32           ` Randy Brukardt
2011-07-21 15:28     ` Adam Beneschan
2011-07-21 15:41       ` Robert A Duff
2011-07-21 20:12         ` Adam Beneschan
2011-07-23  0:31           ` Randy Brukardt
2011-07-21 17:40     ` Jeffrey Carter
2011-07-21 21:30       ` Brian Drummond
2011-07-21 21:54         ` Adam Beneschan
2011-07-22 10:16           ` Brian Drummond
2011-07-22 14:54             ` Adam Beneschan
2011-07-23  0:46             ` Randy Brukardt
2011-07-23  0:42         ` Randy Brukardt
2011-07-23  9:20           ` Niklas Holsti
2011-08-04  5:56             ` David Thompson
2011-07-23  9:24           ` Dmitry A. Kazakov
2011-07-23 12:36           ` Brian Drummond
2011-07-21 15:13   ` Robert A Duff
2011-07-23  0:52     ` Randy Brukardt
2011-07-23 14:48       ` Robert A Duff
2011-07-21 14:17 ` anon
replies disabled

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