CVS difference for ais/ai-00130.txt
--- ais/ai-00130.txt 1999/03/22 22:33:21 1.2
+++ ais/ai-00130.txt 1999/04/15 16:54:14 1.3
@@ -1,12 +1,13 @@
-!standard H.4 (08) 99-03-21 AI95-00130/03
+!standard H.4 (08) 99-04-15 AI95-00130/04
!class binding interpretation 96-04-13
+!status ARG approved (with editiorial changes) 8-0-1 99-03-25
!status work item 96-04-17
!status received 96-04-13
!priority Medium
!difficulty Medium
!subject Enforcing Restrictions might violate the generic contract model.
-!summary 99-03-21
+!summary
The enforcement of restrictions might violate the contract model
of generics, as well as violate the "privateness" of code in a private part
@@ -16,13 +17,14 @@
restrictions, the No_Local_Allocators restriction should not preclude nested
generic instantiations. No_Nested_Finalization is broadened to cover
finalization associated with protected and task objects. For the purposes
-of these checks, a generic template is logically expanded at the point
-of each instantiation, the type definition for a record or protected
-type is logically expanded at the point of any default-initialized object
-creation, and default parameter expressions are inserted where used.
+of these (post-compilation) rules, a generic template is logically
+expanded at the point of each instantiation, and all of the expressions of
+the type definition for a record or protected type logically appear
+at the point of any default-initialized object creation, and default parameter
+expressions logically appear where used.
-!question 96-04-13
+!question
H.4(8) says:
@@ -40,7 +42,7 @@
An implementation supporting the No_Task_Hierarchy, No_Nested_Finalization, or
No_Local_Allocators restrictions must enforce the intent of these restrictions
-with compile-time and/or post-compilation checks.
+with checks prior to run-time.
For the purposes of these checks:
@@ -48,9 +50,9 @@
- If an object of a type is declared or allocated and not explicitly
initialized, then all expressions appearing in the definition for
- the type and any of its ancestors are presumed to be evaluated.
+ the type and any of its ancestors are presumed to be used.
- - Default formal parameters are presumed to be evaluated only if the
+ - Default formal parameters are presumed to be used only if the
corresponding actual parameter is not provided in a given call or
instantiation;
@@ -73,7 +75,7 @@
logically expanded at the point of instantiation for the purposes
of this check.
-!wording 99-03-21
+!wording
Paragraph H.4(8) should be revised to say simply:
@@ -89,14 +91,14 @@
Objects with controlled, protected, or task parts, and access types
that designate such objects, shall be declared only at library level.
-Paragraph 13.12(8) should be augmented to include rules for how the
+Paragraph 13.12(8) should be amended to include rules for how the
enforcement of restrictions relates to the expansion of generic
instantiations, default initializations, and default parameters.
-!discussion 99-03-21
+!discussion
Precluding nested generic instances for the No_Local_Allocators restriction
-in H.4(8) in an attempt to preserve a generic control model for restrictions
+in H.4(8) in an attempt to preserve a generic contract model for restrictions
is inconsistent with the rules for No_Task_Hierarchy given in D.7(3) and
for No_Nested_Finalization given in D.7(4). In general, enforcing
pragma Restrictions across a partition will necessarily violate the
@@ -158,7 +160,7 @@
is required of all implementations as part of implementing the
Restrictions pragma, so this is not felt to be unduly burdensome.
-!appendix 99-03-21
+!appendix
[Note: The original comment inadvertently referred to G.4(08)
rather than H.4(08). We have changed those references to H.4 here.]
Questions? Ask the ACAA Technical Agent