- (1)
- A declarative_part contains declarative_items (possibly none).
(2)
declarative_part ::= {declarative_item}
(3)
declarative_item ::=
basic_declarative_item | body
(4)
basic_declarative_item ::=
basic_declaration | representation_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)
- For a call to a (non-protected) subprogram that has an explicit
body, a check is made that the subprogram_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.
Subclauses
- Completions of Declarations
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12