8.1 Declarative Region
Static Semantics
For
each of the following constructs, there is a portion of the program text
called its
declarative region, within which nested declarations
can occur:
any declaration, other than that of an enumeration
type, that is not a completion of a previous declaration;
This paragraph
was deleted.
The declarative
region includes the text of the construct together with additional text
determined (recursively), as follows:
If a declaration is included, so is its completion,
if any.
If the declaration of a library unit (including
Standard — see
10.1.1) is included,
so are the declarations of any child units (and their completions, by
the previous rule). The child declarations occur after the declaration.
The declarative region of a declaration is also called
the declarative region of any view or entity declared by the declaration.
A
declaration occurs
immediately within a declarative region if
this region is the innermost declarative region that encloses the declaration
(the
immediately enclosing declarative region), not counting the
declarative region (if any) associated with the declaration itself.
A declaration is
local
to a declarative region if the declaration occurs immediately within
the declarative region. An entity is
local to a declarative region
if the entity is declared by a declaration that is local to the declarative
region.
A declaration is
global
to a declarative region if the declaration occurs immediately within
another declarative region that encloses the declarative region. An entity
is
global to a declarative region if the entity is declared by
a declaration that is global to the declarative region.
NOTE 1 The children of a parent library
unit are inside the parent's declarative region, even though they do
not occur inside the parent's declaration or body. This implies that
one can use (for example) "P.Q" to refer to a child of P whose
defining name is Q, and that after "use P;" Q can refer
(directly) to that child.
NOTE 2 As explained above and in
10.1.1, “
Compilation
Units - Library Units”, all library units are descendants of
Standard, and so are contained in the declarative region of Standard.
They are
not inside the declaration or body of Standard, but they
are inside its declarative region.
NOTE 3 For a declarative region that
comes in multiple parts, the text of the declarative region does not
include any of the text that appears between the parts. Thus, when a
portion of a declarative region is said to extend from one place to another
in the declarative region, the portion does not contain any of the text
that appears between the parts of the declarative region.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe