comp.lang.ada
 help / color / mirror / Atom feed
From: Adam Beneschan <adam@irvine.com>
Subject: Re: Elaboration order handling (Was: Bug in 'gnatmake')
Date: Wed, 19 Jun 2013 19:29:48 -0700 (PDT)
Date: 2013-06-19T19:29:48-07:00	[thread overview]
Message-ID: <d259bcbf-85bd-456d-adff-6dfb55db0b19@googlegroups.com> (raw)
In-Reply-To: <kptkek$1e2$1@dont-email.me>

On Wednesday, June 19, 2013 6:09:24 PM UTC-7, Jeffrey Carter wrote:
> Since we're discussing elaboration order, there's a case that I wonder about:
> 
> with B;
> 
> package A is
>     function F (I : Integer) return B.Thing;
> 
>     function R return Integer;
> end A;
> 
> package body A is
>     function F (I : Integer) return B.Thing is
>        -- null;
>     begin -- F
>        return B.To_Thing (I);
>     end F;
> 
>     function R return Integer is
>        -- null;
>     begin -- R
>        return 7;
>     end R;
> 
> end A;
> 
> package B is
>     type Thing is private;
> 
>     function To_Thing (I : Integer) return Thing;
> private -- B
>     type Thing is new Integer;
> end B;
> 
> with A;
> 
> package body B is
>     function To_Thing (I : Integer) return Thing is
>        -- null;
>     begin -- To_Thing
>        return Thing (I);
>     end To_Thing;
> 
>     C : constant Integer := A.R;
> end B;
> 
> It seems to me there's a valid elaboration order for these:
> 
> * spec of B
> * spec of A
> * body of A
> * body of B
> 
> I've never been able to get such code to bind, though. Is there some way to get 
> this accepted, or is it illegal Ada?

It's legal Ada (and should run without raising Program_Error).  It looks like http://docs.adacore.com/gnat-unw-docs/html/gnat_ugn_36.html, especially C.10, discusses this sort of situation, but I don't know if you looked there already.

                                -- Adam


  reply	other threads:[~2013-06-20  2:29 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 [this message]
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
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