CVS difference for ai05s/ai05-0190-1.txt

Differences between 1.6 and version 1.7
Log of other versions for file ai05s/ai05-0190-1.txt

--- ai05s/ai05-0190-1.txt	2010/10/26 02:06:54	1.6
+++ ai05s/ai05-0190-1.txt	2011/01/25 04:34:20	1.7
@@ -1,4 +1,4 @@
-!standard 13.11.3(0)                                10-10-25  AI05-0190-1/05
+!standard 13.11.3(0)                                11-01-23  AI05-0190-1/06
 !class amendment 09-11-03
 !status work item 09-11-03
 !status received 09-11-03
@@ -70,10 +70,8 @@
 another pragma Default_Storage_Pool. Otherwise, Redundant[the pragma occurs
 immediately within a sequence of declarations], and it defines the default pool
 within the immediate scope of the pragma to be either null or the pool denoted
-by the *storage_pool*_name, except within the immediate scope of another pragma
+by the *storage_pool*_name, except within the immediate scope of a later pragma
 Default_Storage_Pool. Redundant[Thus, an inner pragma overrides an outer one.]
-The pragma applies to all nonderived access types declared in the places
-defined here, including within an instance of a generic unit.
 
 A pragma Default_Storage_Pool shall not be used as a configuration pragma within
 the immediate scope of another such pragma.
@@ -96,14 +94,13 @@
 
                               Static Semantics
 
-For an access type to which neither Storage_Pool nor Storage_Size clause
-applies:
+The pragma applies to all nonderived access types declared in the places defined
+above, including within an instance of a generic unit, unless Storage_Pool or
+Storage_Size is specified for the type:
 
     If the default pool is null, the Storage_Size attribute is defined
     by the language to be zero.
     Redundant[Therefore, an allocator for such a type is illegal.]
-    However, this does not apply to access parameters (see Implementation
-    Advice below).
 
     If the default pool is a pool, the Storage_Pool attribute is that
     pool.
@@ -111,14 +108,15 @@
     Otherwise, Redundant[there is no default pool]; the Storage_Pool
     attribute is implementation defined.
 
+
 AARM Ramification: Default_Storage_Pool is the only way to specify the storage
 pool for an anonymous access type.
 
 
-                             Implementation Advice
+                          Implementation Permissions
 
-If the default pool is null, then an allocator passed to an access parameter
-should be allocated on the stack, and automatically reclaimed.
+An object created by an anonymous allocator may be allocated on the stack, and
+automatically reclaimed, regardless of the default pool.
 
 !discussion
 
@@ -144,6 +142,11 @@
 
 ACATS B and C tests are needed.
 
+!ASIS
+
+This needs an enumeration literal to be added to the type pragma_kinds for the new pragma.
+
+
 !appendix
 
 From: Bob Duff
@@ -1109,7 +1112,8 @@
 > of course, if that happens in some rarely used code, you may simply not detect
 > it until the system is fielded. Yuck.
 
-Yes, I understand all that.  I even half-agree with it (as I said, I'm trying to be neutral on this point).
+Yes, I understand all that.  I even half-agree with it (as I said, I'm trying to
+be neutral on this point).
 
 To summarize, you object to a loophole in Default_Storage_Pool(null).
 I think that's a fair characterization of your position.
@@ -1346,6 +1350,28 @@
 needs to be written as a post-compilation check, or there needs to be an
 assume-the-worst rule, or the check needs to be done on the body when it is
 compiled (and not at the point of the instance).
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Monday, January 24, 2011  9:58 PM
+
+>                           Implementation Permissions
+>
+> An object created by an anonymous allocator may be allocated on the
+> stack, and automatically reclaimed, regardless of the default pool.
+
+I find this wording misleading, as it seems to imply that it is OK to allow such
+allocators even when the default pool is null. That was not the intent; there is
+some support for that in that Storage_Size is zero for such a type. But since
+you can't name the type, how can you tell?
+
+Either we should have an AARM "To Be Honest" note ("This does not apply whrn the
+default pool is null; the allocator is statically illegal and where the object
+would have been created is irrelevant.") or we should add something to the
+wording:
+
+... regardless of the default pool (other than when the default pool is null).
 
 ****************************************************************
 

Questions? Ask the ACAA Technical Agent