comp.lang.ada
 help / color / mirror / Atom feed
From: bobduff@world.std.com (Robert A Duff)
Subject: Re: AQ&S Guidance on pragma Elaborate_Body
Date: 1997/04/22
Date: 1997-04-22T00:00:00+00:00	[thread overview]
Message-ID: <E91yH8.36E@world.std.com> (raw)
In-Reply-To: mheaney-ya023680002204970735480001@news.ni.net


(e-mailed and posted)

In article <mheaney-ya023680002204970735480001@news.ni.net>,
Matthew Heaney <mheaney@ni.net> wrote:
>In article <E91Gty.4DI@world.std.com>, bobduff@world.std.com (Robert A
>Duff) wrote:
>
>>    generic
>>    package G1 is ... end G1;
>>
>>    package body G1 is ... end G1;
>>
>>    generic
>>    package G2 is ... end G2;
>>
>>    with G1;
>>    package body G2 is
>>        package Inst_1 is new G1;
>>    end G2;
>>
>>    with G2; pragma Elaborate(G2);
>>    package P is
>>        package Inst_2 is new G2;
>>    end P;
>>
>>This will raise Program_Error.
>
>But isn't G2 supposed to elaborate G1?
>
>with G1; 
>pragma Elaborate (G1);   <<<---
>package body G2 is
>    package Inst_1 is new G1;
>end G2;

No, G2 does not instantiate G1 during its (G2's) elaboration.  In fact,
G2 doesn't do anything during elaboration, except to record the fact
that it has now been elaborated.  In the above example, the following
elaboration order does not raise P_E:

    G2 spec
    G2 body
    G1 spec
    G1 body
    P spec

Of course, you can have a convention that calls for putting in
unnecessary pragmas Elaborate, such as the one you suggest.  (For
example, a reasonable convention for Ada 83 was: put pragma Elaborate on
everything you "with", unless you can't because of a cycle.)  But I
thought we were discussing this convention: X should have
pragma-Elaborate_All of Y if and only if X calls/instantiates/activates
some subprogram/generic/task in Y during X's elaboration (unless Y has
Pure, Preelab, or Elab_Body).  And you asked, with respect to this
convention, whether it should be Elab instead of Elab_Body.

>Isn't G2 supposed to take care of it's own business, and make sure G1 is
>elaborated?  This is analogous to P making sure G2 is elaborated.

No, it's not analogous.  G2 is instantiated during P's elaboration.  G1
is not instantiated during G2's elaboration.

- Bob




  reply	other threads:[~1997-04-22  0:00 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-04-18  0:00 AQ&S Guidance on pragma Elaborate_Body JP Thornley
1997-04-18  0:00 ` Robert A Duff
1997-04-21  0:00   ` Michael F Brenner
1997-04-22  0:00     ` Robert A Duff
1997-04-18  0:00 ` Robert Dewar
1997-04-19  0:00   ` Michael Paus
1997-04-19  0:00     ` Robert A Duff
1997-04-21  0:00       ` Robert Dewar
1997-04-23  0:00         ` Robert A Duff
1997-04-23  0:00           ` Robert Dewar
1997-04-24  0:00             ` Robert A Duff
1997-04-24  0:00               ` Robert Dewar
1997-04-24  0:00                 ` Robert Dewar
1997-04-25  0:00                   ` Robert A Duff
1997-04-25  0:00                 ` Mats Weber
1997-04-25  0:00                   ` Robert I. Eachus
1997-04-26  0:00                     ` Nick Roberts
1997-04-26  0:00                       ` Robert Dewar
1997-04-28  0:00                         ` Robert I. Eachus
1997-04-29  0:00                           ` Robert Dewar
1997-04-29  0:00                             ` Robert I. Eachus
1997-04-27  0:00                   ` Robert Dewar
1997-04-28  0:00                     ` Mats Weber
1997-04-29  0:00                     ` Redefinition of "=", elaboration and learning Ada Mats Weber
1997-04-29  0:00                       ` Robert A Duff
1997-04-30  0:00                         ` Mats Weber
1997-04-26  0:00                 ` AQ&S Guidance on pragma Elaborate_Body Nick Roberts
1997-04-26  0:00                   ` Robert Dewar
1997-04-24  0:00           ` Mats Weber
1997-04-24  0:00             ` Robert A Duff
1997-04-24  0:00               ` Robert Dewar
1997-04-25  0:00             ` Robert Dewar
1997-04-20  0:00     ` Robert Dewar
1997-04-21  0:00     ` Michael F Brenner
1997-04-23  0:00       ` Robert Dewar
1997-04-24  0:00         ` Laurent Guerby
1997-04-24  0:00         ` Matthew Heaney
1997-04-24  0:00           ` Jon S Anthony
1997-04-24  0:00             ` Matthew Heaney
1997-04-26  0:00               ` Nick Roberts
1997-04-26  0:00                 ` Matthew Heaney
1997-04-26  0:00                 ` Robert A Duff
1997-04-26  0:00               ` Robert Dewar
1997-04-26  0:00                 ` Matthew Heaney
1997-04-27  0:00                   ` Robert Dewar
1997-04-29  0:00                     ` John G. Volan
1997-04-29  0:00                       ` Matthew Heaney
1997-04-30  0:00                         ` Jon S Anthony
1997-05-01  0:00                         ` John G. Volan
1997-05-02  0:00                           ` Booch "forms" and child packages [was: AQ&S Guidance on pragma Elaborate_Body] John G. Volan
1997-05-02  0:00                         ` AQ&S Guidance on pragma Elaborate_Body John G. Volan
1997-04-25  0:00             ` Robert Dewar
1997-04-24  0:00           ` Robert A Duff
1997-04-24  0:00           ` Robert Dewar
1997-04-25  0:00           ` Michael F Brenner
1997-04-26  0:00             ` Nick Roberts
1997-04-20  0:00 ` Doug Smith
1997-04-20  0:00   ` Robert Dewar
1997-04-21  0:00     ` Matthew Heaney
1997-04-21  0:00       ` Robert A Duff
1997-04-21  0:00         ` Robert Dewar
1997-04-22  0:00           ` Robert A Duff
1997-04-24  0:00             ` Robert Dewar
1997-04-21  0:00         ` Matthew Heaney
1997-04-21  0:00           ` Matthew Heaney
1997-04-22  0:00             ` Mats Weber
1997-04-22  0:00             ` Robert A Duff
1997-04-22  0:00               ` Matthew Heaney
1997-04-22  0:00                 ` Robert A Duff [this message]
1997-04-22  0:00                   ` Matthew Heaney
1997-04-23  0:00                     ` Robert A Duff
1997-04-24  0:00                       ` Matthew Heaney
1997-04-24  0:00                         ` Robert A Duff
1997-04-25  0:00                       ` Robert Dewar
1997-04-23  0:00                     ` Robert Dewar
1997-04-24  0:00                 ` Robert Dewar
1997-04-24  0:00                   ` Robert A Duff
1997-04-23  0:00             ` Robert Dewar
1997-04-21  0:00           ` Robert A Duff
  -- strict thread matches above, loose matches on Subject: below --
1997-04-30  0:00 W. Wesley Groleau (Wes)
1997-04-30  0:00 ` Robert I. Eachus
replies disabled

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