CVS difference for ai05s/ai05-0066-1.txt
--- ai05s/ai05-0066-1.txt 2008/03/07 06:15:19 1.4
+++ ai05s/ai05-0066-1.txt 2008/05/10 05:14:33 1.5
@@ -1,4 +1,4 @@
-!standard 3.10.2(14.4/2) 08-02-22 AI05-0066-1/04
+!standard 3.10.2(14.4/2) 08-05-09 AI05-0066-1/05
!standard 7.6.1(13/2)
!standard 7.6.1(13.1/2)
!class binding interpretation 07-10-22
@@ -22,7 +22,7 @@
!question
-Consider the following three items (assume that F and G are function returning
+Consider the following three items (assume that F and G are functions returning
objects with controlled parts, and that no build-in-place permissions are used for
these objects):
@@ -45,7 +45,7 @@
of the assignment statement.
For (2), the function_call (which is a name) is a master (by 7.6.1(3/2)) as it is not
-nested in any of the things that would prevent from being a master. The
+nested in any of the things that would prevent it from being a master. The
special case doesn't apply either (a renames isn't an initialization), but
the function_call F is a master. Thus anon_G is finalized as soon as F completes its
evaluation and call. OTOH, since we'll believe the AARM note (even though the actual
@@ -56,7 +56,7 @@
the rename. That's what we want.
For (3), the function_call (which is an expression) is a master (by 7.6.1(3/2)) as
-it is not nested in any of the things that would prevent from being a master. In this
+it is not nested in any of the things that would prevent it from being a master. In this
case, the special case (of initialization in its entirety) does apply, so the accessibility
of anon_F is that of Obj. The effect is that both the special case and
the normal case give the same result: anon_F has the accessibility of Obj. So again,
@@ -161,7 +161,7 @@
7.6(21/2) gives a permission to eliminate the anonymous object completely. But there is
no permission to finalize the object early.
-Two possible solutions to this problem have been proposed:
+Two alternative solutions to this problem were proposed:
(1)
@@ -191,7 +191,7 @@
Give an Implementation Permission to allow early finalization of objects with controlled parts
if they are not accessible by any path other than the finalization mechanism.
-This would allow implementations to finalize the temporories as soon as they are copied.
+This would allow implementations to finalize the temporaries as soon as they are copied.
This has the advantage of also solving the garbage collection problem (Ada does not
allow garbage collection of controlled objects, because there is no permission to
@@ -219,6 +219,10 @@
(The part in square brackets is repeated from 7.6(11/2), and thus follows; we would need
to explicitly say something else if we don't want that.)
+Neither of these solutions was very satisfying, so ultimately we chose to give the
+function call or aggregate a different (sometimes more nested) master than normally
+is applied.
+
!corrigendum 3.10.2(14.4/2)
@drepl
@@ -269,7 +273,7 @@
!ACATS Test
-** TBD **
+An ACATS C-test needs to check that any temporary object is finalized immediately.
!appendix
Questions? Ask the ACAA Technical Agent