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

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

--- ai22s/ai22-0017-1.html	2023/03/21 08:31:13	1.1
+++ ai22s/ai22-0017-1.html	2023/04/07 06:37:00	1.2
@@ -1,4 +1,4 @@
-<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0017-1/01</title>
+<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0017-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}
@@ -11,12 +11,16 @@
 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.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}
+SPAN.ujv{font-weight:700; font-family:"Courier New",monospace}
+SPAN.yvf{font-family:"Courier New",monospace}
 </style>
 </head><body class="body"><p class="l3h">AI22-0017-1</p>
 <p class="head">!standard 4.5.9(10/5) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;23-03-17
-&nbsp;AI22-0017-1/01</p>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;23-04-03
+&nbsp;AI22-0017-1/02</p>
 <p class="head">!class ramification 23-03-17</p>
+<p class="head">!status Corrigendum 1-2022 &nbsp;23-03-30</p>
+<p class="head">!status ARG Approved 12-0-0 &nbsp;23-03-30</p>
 <p class="head">!status work item 21-11-12</p>
 <p class="head">!status received 21-04-08</p>
 <p class="head">!priority Low</p>
@@ -38,14 +42,20 @@
 <p class="word">AARM Ramification:</p>
 <p class="word">If the evaluation of a <span class="ntrm">declare_expression</span> is not a master
 (see 7.6.1) then objects declared therein may still exist (and have pending finalization) after the
-evaluation of the <span class="ntrm">declare_expression</span> has completed. This can also be the
-case for other objects, such as those created by the evaluation of aggregates or function
-calls.</p>
+evaluation of the <span class="ntrm">declare_expression</span> has completed. This is consistent
+with the handling of other objects created by subexpressions, such as those created by the
+evaluation of aggregates or function calls.</p>
 <h2 class="head">!discussion</h2>
-<p class="txts">The original motivation for this AI was the requirement that objects created in an
-iteration last until the end of that iteration. Eventually, it was recognized that that was a
-problem that existed in many existing cases and was not specific to declare_expressions. It was
-spun out into AI22-0040-1 and addressed for all expressions.</p>
+<p class="txts">The original motivation for this AI was the requirement that objects created by
+repeated evaluations of a declare_expression as part of the evaluation of an enclosing expression
+persist until the entire expression is evaluated. For example, in an aggregate like
+<span class="yvf">(1..10 =&gt; (</span><span class="ujv">declare</span><span class="yvf">
+X:</span><span class="ujv">constant</span><span class="yvf"> Some_Controlled_Type := F
+</span><span class="ujv">begin</span><span class="yvf"> X.C)</span>, none of the 10 X objects could
+be finalized until all 10 had been evaluated. Eventually, it was recognized that lifetimes of
+repeatedly evaluated subexpressions was a problem that existed in many existing cases (going back
+to Ada 95) and was not specific to declare_expressions. It was spun out into AI22-0040-1 and
+addressed for all expressions.</p>
 
 <p class="txts">After some false starts, we realized that the model for Ada has always been that
 there is a single master for an (entire) expression. This means that temporaries created for inner

Questions? Ask the ACAA Technical Agent