Contents   Index   Search   Previous   Next
 3.11 Declarative Parts
1
   A declarative_part
contains declarative_items (possibly
none). 
Syntax
2
declarative_part
::= {
declarative_item}
 
3
declarative_item
::= 
    basic_declarative_item | 
body 
4/1
basic_declarative_item
::= 
    basic_declaration | 
aspect_clause | 
use_clause 
5
body
::= proper_body | 
body_stub 
6
proper_body
::= 
    subprogram_body | 
package_body | 
task_body | 
protected_body 
Dynamic Semantics
7
   The elaboration of a 
declarative_part
consists of the elaboration of the 
declarative_items,
if any, in the order in which they are given in the 
declarative_part.
 
8
   An elaborable construct is
in the 
elaborated state after the normal completion of its elaboration.
Prior to that, it is 
not yet elaborated. 
 
9
   For a
construct that attempts to use a body, a check (Elaboration_Check) is
performed, as follows: 
 
10/1
- For a call to a (non-protected) subprogram
that has an explicit body, a check is made that the body is already elaborated.
This check and the evaluations of any actual parameters of the call are
done in an arbitrary order. 
11
- For a call to a protected operation
of a protected type (that has a body -- no check is performed if a pragma
Import applies to the protected type), a check is made that the protected_body
is already elaborated. This check and the evaluations of any actual parameters
of the call are done in an arbitrary order. 
12
- For the activation of a task, a check
is made by the activator that the task_body
is already elaborated. If two or more tasks are being activated together
(see 9.2), as the result of the elaboration
of a declarative_part or the initialization
for the object created by an allocator, this check is done for all of
them before activating any of them. 
13
- For the instantiation of a generic
unit that has a body, a check is made that this body is already elaborated.
This check and the evaluation of any explicit_generic_actual_parameters
of the instantiation are done in an arbitrary order. 
14
    The exception Program_Error
is raised if any of these checks fails. 
 
Contents   Index   Search   Previous   Next   Legal