CVS difference for ais/ai-30359.txt

Differences between 1.4 and version 1.5
Log of other versions for file 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
 !priority Medium
@@ -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
+  default.
 
   The rules for matching of actual parameters between the completion
   and the partial instantiation are as follows:
@@ -177,7 +178,7 @@
        matching subtypes.
 
      * 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 @@
 
       Static Semantics
 
-  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
-  defined.
+  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.
 
       Dynamic Semantics
 
@@ -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
 proposal.
 
 During the Ada 9X process, we observed that there is a relationship

Questions? Ask the ACAA Technical Agent