CVS difference for ais/ai-00391.txt

Differences between 1.3 and version 1.4
Log of other versions for file 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.
 
 !problem
 
@@ -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.
+
 !example
 
-(** Missing **)
+(See problem.)
 
 !corrigendum 3.4(27)
 

Questions? Ask the ACAA Technical Agent