CVS difference for ai05s/ai05-0157-1.txt
--- ai05s/ai05-0157-1.txt 2009/07/11 03:06:22 1.3
+++ ai05s/ai05-0157-1.txt 2009/12/10 07:23:13 1.4
@@ -1,6 +1,7 @@
-!standard 13.11.2(3) 09-06-27 AI05-0157-1/01
+!standard 13.11.2(4) 09-12-09 AI05-0157-1/02
!class binding interpretation 09-06-02
+!status ARG Approved 10-0-1 09-11-08
!status work item 09-06-02
!status received 09-02-15
@@ -12,8 +13,8 @@
Calling an instance of Unchecked_Deallocation is illegal if pool is
known to have Storage_Size equal to zero.
-We recommend that an instance of Unchecked_Deallocation raise Program_Error
-if the pool has Storage_Size equal to zero (if it is not illegal).
+An instance of Unchecked_Deallocation raises Program_Error if the pool
+has Storage_Size equal to zero (if it is not illegal).
@@ -35,7 +36,7 @@
-Add after 13.11.2(3):
+Add before 13.11.2(4):
@@ -59,7 +60,7 @@
AARM Note: If the call is not illegal (as in a generic body), we recommend that
-it raise Program_Error. Since the execution of this call erroneous (any allocator
+it raise Program_Error. Since the execution of this call is erroneous (any allocator
from the pool will have raised Storage_Error, so the non-null access value must
have been allocated from a different pool or be a stack-allocated object), we can't
require any behavior - anything at all would be a legitimate implementation.
@@ -70,7 +71,7 @@
Humm, reading the wording of 13.11.2(16), one could argue that calling an instance of
Unchecked_Deallocation with a null access value is *always* erroneous. It's not clear
what "the object" is in that case, but surely it wasn't created by an allocator with
-Name'Storage_Pool. (Of course, even Adam would be embarassed to actually claim this
+Name'Storage_Pool. (Of course, even Adam would be embarrassed to actually claim this
seriously - no one could doubt the intent.) Do we need to clarify 13.11.2(16) in some
way (perhaps an AARM To Be Honest note would be sufficient)?]
@@ -116,8 +117,32 @@
for option (4) if the call is legal but the size is known to be zero.
+Given an instance of Unchecked_Deallocation declared as follows:
+A call on an instance of Unchecked_Deallocation is illegal if the actual
+access type of the instance is a type for which the Storage_Size has been
+specified by a static expression with value zero or is defined by the language
+to be zero. In addition to the places where Legality Rules normally apply (see
+12.3), this rule applies also in the private part of an instance of a generic unit.
+This rule does not apply in the body of a generic unit or within a body declared
+within the declarative region of a generic unit, if the actual access type of
+the instance is a descendant of a formal access type declared within the formal
+part of the generic unit.
+For a standard storage pool, Free should actually reclaim the storage.
+A call on an instance of Unchecked_Deallocation with a non-null access value should
+raise Program_Error if the actual access type of the instance is a type for which
+the Storage_Size has been specified to be zero or is defined by the language to be
Questions? Ask the ACAA Technical Agent