Contents Index Search Related Documents Previous Next
3.11.1 Completions of Declarations
1/1
Declarations sometimes come in two parts.
A
declaration that requires a second part is said to
require completion.
The second part is called the
completion of
the declaration (and of the entity declared), and is either another declaration,
a body, or a
pragma. A
body
is a
body, an
entry_body,
or a renaming-as-body (see
8.5.4).
Name Resolution Rules
2
A construct that
can be a completion is interpreted as the completion of a prior declaration
only if:
3
- The declaration and the completion
occur immediately within the same declarative region;
4
- The defining name or defining_program_unit_name
in the completion is the same as in the declaration, or in the case of
a pragma, the pragma
applies to the declaration;
5
- If the declaration is overloadable,
then the completion either has a type-conformant profile, or is a pragma.
Legality Rules
6
An implicit declaration shall not have a completion.
For any explicit declaration that is specified to
require completion, there shall be a corresponding explicit completion.
7
At most one completion is allowed for a given
declaration. Additional requirements on completions appear where each
kind of completion is defined.
8
A type is
completely defined
at a place that is after its full type definition (if it has one) and
after all of its subcomponent types are completely defined. A type shall
be completely defined before it is frozen (see
13.14
and
7.3).
9
92 Completions are in principle
allowed for any kind of explicit declaration. However, for some kinds
of declaration, the only allowed completion is a pragma
Import, and implementations are not required to support pragma
Import for every kind of entity.
10
93 There are rules that
prevent premature uses of declarations that have a corresponding completion.
The Elaboration_Checks of 3.11 prevent such
uses at run time for subprograms, protected operations, tasks, and generic
units. The rules of 13.14, “Freezing
Rules” prevent, at compile time, premature uses of other entities
such as private types and deferred constants.
Contents Index Search Related Documents Previous Next Legal