Prev | Up | Next | Back | Forward
TOC -- / --.-- / --.--.-- | Index | Search | Syntax | Help


8.4 Use Clauses

(1)
A use_package_clause 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.
Syntax
(2)
       use_clause ::= use_package_clause | use_type_clause
(3)
       use_package_clause ::= use package_name {, package_name};
(4)
       use_type_clause ::= use type subtype_mark {, subtype_mark};
Legality Rules
(5)
A package_name of a use_package_clause shall denote a package.
Static Semantics
(6)
For each use_clause, there is a certain region of text called the scope of the use_clause. For a use_clause within a context_clause of a library_unit_declaration or library_unit_renaming_declaration, the scope is the entire declarative region of the declaration. For a use_clause within a context_clause of a body, the scope is the entire body and any subunits (including multiply nested subunits). The scope does not include context_clauses themselves.
(7)
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.
(8)
For each package denoted by a package_name of 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 T or T'Class determined by a subtype_mark of 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.
(9)
A declaration is use-visible if it is potentially use-visible, except in these naming-conflict cases:
(10)
(11)
Dynamic Semantics
(12)
The elaboration of a use_clause has no effect.
Examples
(13)
Example of a use clause in a context clause:
(14)
       with Ada.Calendar; use Ada;
(15)
Example of a use type clause:
(16)
       use type Rational_Numbers.Rational; -- see 7.1
       Two_Thirds: Rational_Numbers.Rational := 2/3;


Prev | Up | Next | Back | Forward
TOC -- / --.-- / --.--.-- | Index | Search | Syntax | Help

Ada WWW Home -- Email comments, additions, corrections, gripes, kudos, etc. to:

Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12