Contents Index Search Previous Next
10.1.6 Environment-Level Visibility Rules
1
The normal visibility rules do not apply within
a parent_unit_name or a context_clause,
nor within a pragma that appears
at the place of a compilation unit. The special visibility rules for
those contexts are given here.
Static Semantics
2
Within
the
parent_unit_name at the beginning
of a
library_item, and within a
with_clause, the only declarations
that are visible are those that are
library_items
of the environment, and the only declarations that are directly visible
are those that are root
library_items
of the environment.
Notwithstanding the rules of
4.1.3, an expanded name in a
with_clause
may consist of a
prefix that denotes
a generic package and a
selector_name
that denotes a child of that generic package. (The child is necessarily
a generic unit; see
10.1.1.)
3
Within
a
use_clause or
pragma
that is within a
context_clause,
each
library_item mentioned in a
previous
with_clause of the same
context_clause is visible, and each
root
library_item so mentioned is
directly visible. In addition, within such a
use_clause,
if a given declaration is visible or directly visible, each declaration
that occurs immediately within the given declaration's visible part is
also visible. No other declarations are visible or directly visible.
4
Within
the
parent_unit_name of a subunit,
library_items are visible as they
are in the
parent_unit_name of a
library_item; in addition, the declaration
corresponding to each
body_stub
in the environment is also visible.
5
Within
a
pragma that appears at the place
of a compilation unit, the immediately preceding
library_item
and each of its ancestors is visible. The ancestor root
library_item
is directly visible.
Contents Index Search Previous Next Legal