From: Anh Vo <anhvofrcaus@gmail.com>
Subject: Re: Legit Warnings or not
Date: Thu, 21 Jul 2011 11:43:23 -0700 (PDT)
Date: 2011-07-21T11:43:23-07:00 [thread overview]
Message-ID: <5b1684ab-1b34-4a90-8942-06d10e17d4ed@o18g2000yqm.googlegroups.com> (raw)
In-Reply-To: wccy5zslezc.fsf@shell01.TheWorld.com
On Jul 20, 4:16 pm, Robert A Duff <bobd...@shell01.TheWorld.com>
wrote:
> Anh Vo <anhvofrc...@gmail.com> writes:
>
> > 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)").
>
> > 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. It's illegal to say
> "X : Acceptable_Person;", so that one doesn't get a warning.
I got it now. Thanks.
> If you want unconstrained objects, use a reasonably-small size, like:
>
> subtype Name_Length is Natural range 0..1000;
>
> type Not_Warned_Person (Size : Name_Length := 0) is
> record
> Name : String (1 .. Size);
> end record;
Good suggestion. Again, thanks.
Anh Vo
next prev parent reply other threads:[~2011-07-21 18:43 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 [this message]
2011-07-23 0:26 ` Randy Brukardt
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