Contents   Index   Search   Previous   Next


12.7 Formal Packages

1
   Formal packages can be used to pass packages to a generic unit. The formal_package_declaration declares that the formal package is an instance of a given generic package. Upon instantiation, the actual package has to be an instance of that generic package.

Syntax

2
formal_package_declaration ::=
    with package defining_identifier is new generic_package_name  formal_package_actual_part;
3
formal_package_actual_part ::=
    (<>) | [generic_actual_part]

Legality Rules

4
   The generic_package_name shall denote a generic package (the template for the formal package); the formal package is an instance of the template.
5
   The actual shall be an instance of the template. If the formal_package_actual_part is (<>), then the actual may be any instance of the template; otherwise, each actual parameter of the actual instance shall match the corresponding actual parameter of the formal package (whether the actual parameter is given explicitly or by default), as follows:
6
7
8
8.1/1
       For the purposes of matching, any actual parameter that is the name of a formal object of mode in is replaced by the formal object's actual expression (recursively).

Static Semantics

9
   A formal_package_declaration declares a generic formal package.
10
    The visible part of a formal package includes the first list of basic_declarative_items of the package_specification. In addition, if the formal_package_actual_part is (<>), it also includes the generic_formal_part of the template for the formal package.

Contents   Index   Search   Previous   Next   Legal