CVS difference for ais/ai-00391.txt
--- ais/ai-00391.txt 2004/12/07 21:07:52 1.3
+++ ais/ai-00391.txt 2004/12/09 19:51:33 1.4
@@ -1,4 +1,4 @@
-!standard 03.09.03 (04) 04-12-03 AI95-00391/02
+!standard 03.09.03 (04) 04-12-06 AI95-00391/03
!standard 03.04 (27)
!standard 03.09.01 (04)
!standard 03.09.03 (06)
@@ -18,7 +18,8 @@
with controlling results do *not* need to be overridden. The
result of calling an implicitly declared inherited function
with a controlling result is an extension aggregate with
-a null extension part.
+a null extension part. Note that functions with controlling
+*access* results still need to be overridden.
@@ -133,9 +134,23 @@
wrapper often created for a renaming-as-body. A null extension
aggregate essentially just changes the tag of its ancestor_part.
+We do not provide automatic null extensions for functions
+with controlling *access* results, as this would imply allocating
+a new object and copying into it. We can't just change the
+tag in place because the access value might refer to a preexisting
+object. We also can't copy in the case of a limited designated type.
+No corresponding problem exists for untagged types, because
+derived types with primitives are required to have the same
+representation. Note that this sort of conversion between
+access T and access NT occurs on the way "in" to an inherited
+primitive of an untagged type with an access parameter, so
+performing the reverse conversion on the return value should
+impose no new implementation issue.
-(** Missing **)
Questions? Ask the ACAA Technical Agent