comp.lang.ada
 help / color / mirror / Atom feed
From: Adam Beneschan <adam@irvine.com>
Subject: Re: Elaboration order handling (Was: Bug in 'gnatmake')
Date: Fri, 21 Jun 2013 08:48:17 -0700 (PDT)
Date: 2013-06-21T08:48:17-07:00	[thread overview]
Message-ID: <d898d2a7-c296-4cf5-b7c4-47d684ad7345@googlegroups.com> (raw)
In-Reply-To: <kq0ns4$oce$2@dont-email.me>

On Thursday, June 20, 2013 10:26:14 PM UTC-7, Jeffrey Carter wrote:
> On 06/20/2013 08:11 AM, Robert A Duff wrote:
> The I guess you'd prefer
> 
> 
> while Function_With_Side_Effects loop
> 
> end loop;
> 
> to the Ada requirement that you have to put a null statement in there? I like 
> the idea that something that's empty has to have something special in it to show 
> that it's deliberately empty, and think it should apply to declarative parts, as 
> well.
> 

Do you do that with empty parameter lists?

   procedure Proc_1
                    --(null)
                              is
   ...

How about empty constraints?  The definition of <subtype_indication> is [null_exclusion] <subtype_mark> [constraint].  If the constraint is empty, shouldn't you have to put something in there to indicate that it's deliberately empty?

    I : Integer; --null constraint

Obviously this could get ridiculous, and the point is that of course you cannot apply what you're saying consistently.  There are things where showing that you mean for something to be deliberately empty is helpful, and things where it isn't.  And like Bob, I think declarative parts are on the "isn't" side of the line.  My really fuzzy explanation of this is that, intuitively, the body of a procedure or the body of a WHILE loop is a "thing" in and of itself--it's the thing that tells what the procedure does, or the thing that you're looping--while a declarative part isn't so much a thing as a "place"--it's the place where you put declarations, if you have any, but it doesn't really stand on its own merits as a "thing".  It's really hard to explain what I mean.  From a reader's standpoint, I had no idea what you were trying to do.  If you say

   procedure Proc_2 is
       -- null;
   begin
       whatever;
   end;

I'd think that you had originally written Proc_2 as a null procedure and then added a body later, and left the commented-out "null" in as an indication that the procedure used to be null in the previous version.  Your example above had only functions, which just made it all the more confusing since there are no null functions.

                             -- Adam

  reply	other threads:[~2013-06-21 15:48 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-17 10:57 Range check for type 'Integer' Peter Brooks
2013-06-17 11:23 ` Simon Clubley
2013-06-17 11:54   ` Simon Wright
2013-06-17 12:55   ` Peter Brooks
2013-06-17 13:28     ` Shark8
2013-06-17 13:45       ` Peter Brooks
2013-06-17 21:16         ` Shark8
2013-06-18 10:48     ` Stephen Leake
2013-06-17 12:46 ` Dmitry A. Kazakov
2013-06-17 13:23 ` Bug in 'gnatmake' (Was: Range check for type 'Integer') Jacob Sparre Andersen
2013-06-17 13:32   ` Bug in 'gnatmake' Jacob Sparre Andersen
2013-06-17 16:50   ` Bug in 'gnatmake' (Was: Range check for type 'Integer') Robert A Duff
2013-06-17 19:15     ` Peter Brooks
2013-06-17 21:09       ` Shark8
2013-06-17 21:22       ` Jeffrey Carter
2013-06-18  1:21         ` Peter Brooks
2013-06-18  6:33           ` Jeffrey Carter
2013-06-18  7:29       ` Georg Bauhaus
2013-06-17 18:49   ` Bug in 'gnatmake' Simon Wright
2013-06-18  9:09     ` Elaboration order handling (Was: Bug in 'gnatmake') Jacob Sparre Andersen
2013-06-18 17:09       ` Robert A Duff
2013-06-18 22:52         ` Adam Beneschan
2013-06-19  1:21           ` Jeffrey Carter
2013-06-19 12:38             ` Robert A Duff
2013-06-19 20:43               ` Georg Bauhaus
2013-06-20  0:37                 ` Robert A Duff
2013-06-20 19:56                   ` Georg Bauhaus
2013-06-19 12:22           ` Robert A Duff
2013-06-19 15:46             ` Adam Beneschan
2013-06-19 16:41               ` Robert A Duff
2013-06-19 20:47               ` Georg Bauhaus
2013-06-19 21:36                 ` Adam Beneschan
2013-06-20  0:57                 ` Robert A Duff
2013-06-20  1:09                   ` Jeffrey Carter
2013-06-20  2:29                     ` Adam Beneschan
2013-06-20  6:08                       ` Jeffrey Carter
2013-06-20 15:11                     ` Robert A Duff
2013-06-21  5:26                       ` Jeffrey Carter
2013-06-21 15:48                         ` Adam Beneschan [this message]
2013-06-21 18:35                           ` Jeffrey Carter
2013-06-21 19:10                             ` Robert A Duff
2013-06-21 21:27                               ` Jeffrey Carter
2013-06-21 20:43                             ` Adam Beneschan
2013-06-21 21:44                               ` Jeffrey Carter
2013-06-21 23:47                                 ` Robert A Duff
2013-06-23 14:43                                   ` AdaMagica
2013-06-21 18:58                         ` null declarative parts (was: Re: Elaboration order handling) Robert A Duff
2013-06-21 20:42                           ` null declarative parts Georg Bauhaus
2013-06-20  2:11                   ` Elaboration order handling (Was: Bug in 'gnatmake') Adam Beneschan
2013-06-20 14:44                     ` Robert A Duff
2013-06-20 11:24                   ` G.B.
2013-06-20 15:23                     ` Robert A Duff
2013-06-19 21:00             ` Georg Bauhaus
2013-06-19 22:26             ` Randy Brukardt
2013-06-20  0:31               ` Robert A Duff
2013-06-20 21:36                 ` Randy Brukardt
2013-06-19 13:07         ` Bill Findlay
replies disabled

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