CVS difference for ais/ai-30359.txt
--- ais/ai-30359.txt 2004/11/24 00:18:33 1.4
+++ ais/ai-30359.txt 2004/11/24 00:53:42 1.5
@@ -1,7 +1,8 @@
-!standard 12.03 (02) 04-11-20 AI95-00359-04/04
+!standard 12.03 (02) 04-11-21 AI95-00359-04/05
!standard 12.03.01 (01)
!standard 13.14 (05)
!class amendment 04-09-19
+!status No Action (9-0-1) 04-11-21
!status work item 04-09-19
!status received 04-09-19
@@ -159,12 +160,12 @@
partial_package_instantiation shall be a (full) package instantiation,
and shall appear later within the private part of the enclosing package.
- The generic_package_name shall denote a generic package (the *template* for
- the partial package instantiation). The completion shall declare an instance
- of the same template; the partial package instance provides a *partial view*
- of this instance. The actual parameters of the completion shall match the
- corresponding actual parameter of the partial package instantiation, whether
- the actual parameter is given explicitly or by default.
+ The generic_package_name shall denote a generic package. The completion shall
+ declare an instance of the same generic package; the partial package instance
+ provides a *partial view* of this instance. The actual parameters of the
+ completion shall match the corresponding actual parameter of the partial
+ package instantiation, whether the actual parameter is given explicitly or by
The rules for matching of actual parameters between the completion
and the partial instantiation are as follows:
@@ -177,7 +178,7 @@
* For other kinds of formals, the actuals match if they statically
- identify the same entity.
+ denote the same entity.
AARM NOTE: We considered using full conformance rules here instead of
formal-package-ish matching. However, we wanted to use rules consistent
@@ -188,15 +189,17 @@
- The declarations within a partial package instance provide views of the
- entities declared by the corresponding declaration within the full
- instance. The view is static only if the entity was static in the template.
- Prior to this corresponding declaration, certain restrictions
- apply to the use of these views (see 13.14). After the corresponding
- declaration, these views are the same as those defined by this corresponding
- declaration. Prior to the full definition of the type in the full
- instance, a type declared within a partial package instance is not completely
+ Each declaration within a partial package instance provides a view of
+ the entity declared by the corresponding declaration within the full
+ instance. The view is static only if the entity was static in the generic
+ unit. Prior to this corresponding declaration, certain restrictions
+ apply to the use of the view (see 13.14). After the corresponding
+ declaration, these restrictions on the view no longer apply.
+ Within the scope of this corresponding declaration, the view
+ from the partial package instance is the same as that defined by this
+ corresponding declaration. Prior to the full definition of a type in
+ the full instance, a type declared within a partial package instance
+ is not completely defined.
@@ -270,6 +273,12 @@
within their visible part. However, the rule disallowing instantiations
using private types prior to their completion, makes this impossible.
+Similarly, exporting a composite abstraction built out of a standard
+container generic. For instance, if we have a window abstraction, we cannot
+also export a list-of-windows using the standard containers. (Such a type
+could be exported by writing many wrappers, but that is error-prone, and
+would not allow the instance to be used as a generic formal package.)
The other important use of an instantiation where the actual is a
private type is for "signature" generics. Such generics allow an
abstraction to be "bundled" up as an instance of a single generic, and
@@ -282,7 +291,7 @@
has no clear way to specify that the generic is declaring an abstraction
that is consistent with the signature.
-Both of the above problems are solved by this partial instantiation
+All of the above problems are solved by this partial instantiation
During the Ada 9X process, we observed that there is a relationship
Questions? Ask the ACAA Technical Agent