CVS difference for ai22s/ai22-0052-1.html

Differences between 1.2 and version 1.3
Log of other versions for file ai22s/ai22-0052-1.html

--- ai22s/ai22-0052-1.html	2023/03/18 06:05:33	1.2
+++ ai22s/ai22-0052-1.html	2023/03/18 08:29:02	1.3
@@ -1,4 +1,4 @@
-<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0052-1/01</title>
+<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0052-1/02</title>
 <style type="text/css">
 table td,table th{padding:0}
 BODY.body{background-color:#ffffff; max-width:468pt; padding:72pt 72pt 72pt 72pt}
@@ -6,22 +6,15 @@
 H2.head{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:12pt; color:#000000; font-size:14pt; padding-bottom:6pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; page-break-after:avoid; orphans:2; widows:2; tex
t-align:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.inst{margin-bottom:0; margin-top:0; margin-left:18pt; margin-right:0; padding-top:9pt; color:#000000; font-size:12pt; padding-bottom:6pt; font-family:"Arial","Liberation Sans",sans-serif;line-height:1.15; orphans:2; widows:2; text-align:left; font-weigh
t:400; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.word{margin-bottom:0; margin-top:0; margin-left:36pt; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:3pt; font-family:"Times New Roman","Times",serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:40
0; text-decoration:none; vertical-align:baseline; font-style:normal}
-UL.wbl{margin-bottom:0; margin-top:0; margin-left:42pt; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:3pt; font-family:"Times New Roman","Times",serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:40
0; text-decoration:none; vertical-align:baseline; font-style:normal; list-style: disc outside}
-P.wind{margin-bottom:0; margin-top:0; margin-left:60pt; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:3pt; font-family:"Times New Roman","Times",serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:40
0; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.codb{margin-bottom:0; margin-top:0; margin-left:12pt; margin-right:0; padding-left:4pt; padding-top:4pt; color:#000000; font-size:10pt; padding-bottom:4pt; font-family:"Courier New",monospace; line-height:1.15; text-align:left; background-color:#f0f0f0;
 font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
 P.text{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:0pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; text-align:left; font-weight:400; text-decoration:
none; vertical-align:baseline; font-style:normal}
 P.txts{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:11pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; text-align:left; font-weight:400; text-decoration
:none; vertical-align:baseline; font-style:normal}
-SPAN.ins{color:#007700}
-SPAN.del{color:#cc8888}
 SPAN.ntrm{font-family:"Arial","Liberation Sans",sans-serif}
-P.l3h{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:26pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:3pt; line-height:1.15; page-break-after:avoid; orphans:2; widows:2; text-alig
n:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
+P.xee{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:26pt;font-family:"Arial","Liberation Sans",sans-serif; orphans:2; widows:2; padding-top:0pt; padding-bottom:3pt; line-height:1.15; page-break-after:avoid; text-alig
n:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
 </style>
-</head><body class="body"><p class="l3h">AI22-0052-1</p>
-<p class="head">!standard 13.11(17.1/5) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-&nbsp; &nbsp; &nbsp; &nbsp; 22-10-27 &nbsp;AI22-0052-1/01</p>
-<p class="head">!standard H.4(23.2/5)</p>
-<p class="head">!standard H.4(23.4/5)</p>
-<p class="head">!standard H.7(4/5)</p>
+</head><body class="body"><p class="xee">AI22-0052-1</p>
+<p class="head">!standard H.7(4/5) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 23-02-21 &nbsp;AI22-0052-1/02</p>
 <p class="head">!standard H.7(7/5)</p>
 <p class="head">!class Binding Interpretation 22-10-27</p>
 <p class="head">!status work item 22-10-27</p>
@@ -32,64 +25,25 @@
 <p class="head">!subject Storage Pool-related side effects</p>
 <h2 class="head">!summary</h2>
 
-<p class="text">If the &quot;No_Hidden_Indirect_Globals&quot; restriction is in place, then an
-allocator or Unchecked_Deallocation for a formal access type or an access type with a user-defined
-storage pool is considered an update to its storage pool, and the storage pool must be covered by
-the applicable global aspects.</p>
+<p class="text">The Storage_Pool attribute of an access type may be used as a global name in order
+to more conveniently describe the effects of the implicit Storage_Pool calls associated with
+constructs such as allocators and unchecked deallocations.</p>
 <h2 class="head">!issue</h2>
 
-<p class="text">There is no way currently to indicate in a generic whether or not an allocator or
-Unchecked_Deallocation is performed on a formal access type A, even though such operations can have
-significant side effects on an object, namely the object A&#39;Storage_Pool, which is not an
-explicit formal parameter. To better understand the possible side effects of a generic, it is
-important to understand whether there are any uses of the operations of the associated storage
-pool.</p>
+<p class="text">In the case of a formal access type, precisely describing the effects of
+allocation/deallocation-related operations is impossible without this addition. In the case of a
+non-formal access type, this change improves maintainability.</p>
 <h2 class="head">!recommendation</h2>
-
-<p class="txts">If the &quot;No_Hidden_Indirect_Globals&quot; restriction is in place, then an
-allocator or Unchecked_Deallocation for a formal access type or an access type with a user-defined
-storage pool is considered an update to its storage pool, and the storage pool must be covered by
-the applicable global aspects. For the purposes of this AI, we presume that user-defined storage
-pools, and those of formal access types, are not known to be synchronized objects, and so such an
-update would not be covered by Global =&gt; <b>in out synchronized</b>, and instead would require
-&quot;Global =&gt; <b>in out all</b>&quot;. On the other hand, &quot;standard&quot; storage pools
-are presumed to be synchronized, and further, there is no requirement to cover them at all if the
-access types are declared in the private part or body of a package.</p>
-
-<p class="text">For precision, a global_object_name may be an attribute reference to the
-Storage_Pool attribute of an access type. This is an Annex H feature. By specifying the storage
-pool object this way, you don&#39;t have to know whether or not the storage pool object of a formal
-access type is synchronized when writing the Global aspect.</p>
+<p class="text">To help in describing the effects of the (implicit) storage pool calls associated
+with an allocator or an unchecked deallocation, a Storage_Pool attribute reference may be used as a
+global name. This includes the case where the attribute prefix denotes a formal
+access-to-subprogram type. This is an Annex H feature.</p>
 <h2 class="head">!wording</h2>
-<p class="inst">Modify H.4(23.2/5):</p>
-
-<p class="word">No_Hidden_Indirect_Globals</p>
-<p class="wind">When within a context where an applicable global aspect is neither</p>
-<p class="wind">Unspecified nor in out all, any execution within such a context does</p>
-<p class="wind"><span class="del">[neither]</span><span class="ins">{none}</span> of the following:
-&nbsp; &nbsp;</p>
-<p class="inst">Modify H.4(23.4/5):</p>
-
-<ul class="wbl"><li>Read (or return a readable reference to) a variable that is reachable via a
-sequence of zero or more dereferences of access-to-object values from a global that is not within
-the applicable global variable set, unless the initial dereference is of a part of a formal
-parameter or global that is visibly of an access-to-object
-type<span class="del">[.]</span><span class="ins">{;</span></li>
-<li><span class="ins">Evaluate an allocator, invoke an instance of Unchecked_Deallocation, or
-evaluate the Storage_Size attribute, for an access type that is a formal access type, or whose
-storage pool is not a standard storage pool, unless the storage pool object of the access type is
-within the applicable global variable set for mode <b>in out </b>for allocation or deallocation, or
-mode <b>in</b> or <b>in out</b> for the attribute reference;</span></li>
-<li><span class="ins">Evaluate an allocator for an access type with a standard storage pool, if the
-result is assigned to a part of a formal parameter, function result, or global that is visibly of
-an access type, unless the applicable global variable set for mode <b>in out</b> includes all
-synchronized objects, or the storage pool object itself.}</span> &nbsp;</li>
-</ul>
 <p class="inst">Add after H.7(4/5):</p>
 <p class="word">An <span class="ntrm">object_name</span> used as a
 <span class="ntrm">global_name</span> may also be an <span class="ntrm">attribute_reference</span>
-for the Storage_Pool attribute, so long as the <span class="ntrm">prefix</span> resolves to
-statically denote an access-to-object subtype, including a formal access type.</p>
+with attribute designator Storage_Pool. [Redundant: The attribute prefix may denote a formal
+access-to-object type.]</p>
 <p class="inst">&nbsp;Modify H.7(7/5):</p>
 <p class="word">The Global aspect for a subtype identifies the global variables that might be
 referenced during default initialization, adjustment as part of assignment, finalization of an
@@ -130,15 +84,16 @@
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <b>with</b> Global =&gt; <b>in</b> <b>out</b> <b>all</b>;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -- &quot;in out synchronized&quot; would not cover
 B&#39;Storage_Pool<br>
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -- since it is (presumably) not a standard storage
-pool<br>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -- unless My_Coll_Storage_Pool is a synchronized
+object<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>
  &nbsp; &nbsp; &nbsp; &nbsp;<b>function</b> Another_New_B (Z : Integer) <b>return</b> B<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <b>with</b> Global =&gt; <b>in</b> <b>out</b>
 B&#39;Storage_Pool;</p>
 <h2 class="head">!ACATS test</h2>
 <p class="text">ACATS B and C-Tests are needed to check that Storage_Pools are included in the
-global as needed (or the code is rejected if not).</p>
+global as needed (or the code is rejected if not), when No_Hidden_Indirect_Globals is in
+effect..</p>
 <h2 class="head">!appendix</h2>
 <p class="txts">This AI was originally considered as AI12-0410-1, which was deferred. This AI
 initially contained all of the relevant contents of that AI. There was no e-mail filed in that

Questions? Ask the ACAA Technical Agent