8.4 Use Clauses
achieves direct visibility of declarations that appear in the visible
part of a package; a use_type_clause
achieves direct visibility of the primitive operators of a type.
use_package_clause ::= use package_name
For a use_clause
immediately within a declarative region, the scope is the portion of
the declarative region starting just after the use_clause
and extending to the end of the declarative region. However, the scope
of a use_clause
in the private part of a library unit does not include the visible part
of any public descendant of that library unit.
For each package named in a use_package_clause
whose scope encloses a place, each declaration that occurs immediately
within the declarative region of the package is potentially use-visible
at this place if the declaration is visible at this place. For each type
'Class named in a use_type_clause
whose scope encloses a place, the declaration of each primitive operator
of type T
is potentially use-visible at this place if its declaration
is visible at this place.
declaration is use-visible
if it is potentially use-visible, except
in these naming-conflict cases:
- A potentially use-visible declaration
is not use-visible if the place considered is within the immediate scope
of a homograph of the declaration.
- Potentially use-visible declarations
that have the same identifier
are not use-visible unless each of them is an overloadable declaration.
Example of a use
clause in a context clause:
with Ada.Calendar; use Ada;
Example of a use type
Rational_Numbers.Rational; -- see 7.1
Two_Thirds: Rational_Numbers.Rational := 2/3;