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

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

--- ai22s/ai22-0047-1.html	2022/09/10 09:05:14	1.2
+++ ai22s/ai22-0047-1.html	2023/04/28 02:30:03	1.3
@@ -1,34 +1,31 @@
-<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0047-1/02</title>
+<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0047-1/03</title>
 <style type="text/css">
 table td,table th{padding:0}
-.c21{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:0pt;border-right-width:0pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:0pt;border-top-style:solid;background-c
olor:#f0f0f0;border-left-style:solid;border-bottom-width:0pt;width:468pt;border-top-color:#000000;border-bottom-style:solid}
-.c20{border-spacing:0;border-collapse:collapse;margin-right:auto}
-.c17{text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;color:#1155cc;text-decoration:underline}
-.c25{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}
-.c10{color:inherit;text-decoration:inherit}
-.c11{height:0pt}
-.c16{font-size:12pt}
+BODY.body{background-color:#ffffff; max-width:468pt; padding:72pt 72pt 72pt 72pt}
 P.head{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:14pt; padding-bottom:0pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:
400; text-decoration:none; vertical-align:baseline; font-style:normal}
 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}
-P.codt{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:10pt; padding-bottom:0pt; font-family:"Courier New",monospace; line-height:1.15; text-align:left; background-color:#f0f0f0; font-weight:400; tex
t-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}
 P.ind{margin-bottom:0; margin-top:0; margin-left:24pt; 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-decoratio
n:none; vertical-align:baseline; font-style:normal}
 P.inds{margin-bottom:0; margin-top:0; margin-left:24pt; 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-decorat
ion:none; vertical-align:baseline; font-style:normal}
-SPAN.del{color:#880000}
-P.a0{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-align
:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
-P.a18{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#444444;font-size:11pt;font-family:"Courier New",monospace; padding-top:0pt; padding-bottom:0pt; line-height:1.15; text-align:left; background-color:#f0f0f0; font-weight:400}
-SPAN.a19{color:#880000; font-weight:700}
-SPAN.a20{color:#bc6060}
-SPAN.a21{text-decoration:none; vertical-align:baseline;font-style:normal}
-SPAN.a22{color:#888888}
+P.from{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:10pt; padding-bottom:0pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:
400; text-decoration:none; vertical-align:baseline; font-style:none}
+P.time{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:9pt; padding-bottom:9pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:4
00; text-decoration:none; vertical-align:baseline; font-style:italic}
+SPAN.name{font-family:"Lucida Calligraphy",cursive; font-style:normal}
+P.edn{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:26pt;font-family:"Arial","Liberation Sans",sans-serif; page-break-after:avoid; padding-top:0pt; padding-bottom:3pt; line-height:1.15; orphans:2; widows:2; text-alig
n:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
+SPAN.t7o{font-size:12pt}
+P.sfn{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#444444;font-size:11pt;font-family:"Courier New",monospace; padding-top:0pt; padding-bottom:0pt; line-height:1.15; text-align:left; background-color:#f0f0f0; font-weight:400}
+SPAN.jo0{color:#880000}
+SPAN.k4c{color:#bc6060}
+SPAN.ehd{text-decoration:none; vertical-align:baseline;font-style:normal}
+SPAN.jmw{color:#888888}
 </style>
-</head><body class="c25 doc-content"><p class="a0">AI22-0047-1</p>
+</head><body class="body"><p class="edn">AI22-0047-1</p>
 <p class="head">!standard 4.5.10(24/5) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;22-09-08
-&nbsp;AI22-0047-1/02</p>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;23-04-26 &nbsp;
+&nbsp;AI22-0047-1/03</p>
 <p class="head">!standard 4.5.10(25/5)</p>
 <p class="head">!standard 4.5.10(28/5)</p>
 <p class="head">!class Ramification 22-08-08</p>
@@ -39,29 +36,25 @@
 <p class="head">!priority Low</p>
 <p class="head">!difficulty Easy</p>
 <p class="head">!qualifier Clarification</p>
-<p class="head">!subject Initialization of and saving the result back in an accumulator during
-reduction</p>
+<p class="head">!subject Use of reduction accumulator</p>
 <h2 class="head">!summary</h2>
-<p class="text">Clarify with an AARM note that the phrase &quot;<span class="c16">saving the result
+<p class="text">Clarify with an AARM note that the phrase &quot;<span class="t7o">saving the result
 as the new value of the accumulator&quot; appearing in 4.5.10(25/5) and a similar phrase &quot;with
-the result saved back in the overall accumulator&quot; in 4.5.1(28/5) have the semantics of an
-assignment when Reduce is a function. &nbsp;Clarify that if the accumulator subtype is indefinite,
-then it is constrained by, and (if class-wide) takes its tag from, the Initial_Value.</span></p>
+the result saved back in the overall accumulator&quot; in 4.5.10(28/5) have the semantics of an
+assignment when Reduce is a function. Clarify that if the accumulator subtype is indefinite, then
+it is constrained by, and (if class-wide) takes its tag from, the Initial_Value.</span></p>
 <h2 class="head">!issue</h2>
+<p class="text">The description of the dynamic semantics of Reduction Expressions talks about
+&quot;saving&quot; the value of each call on the Reduce subprogram back into the accumulator
+(4.5.10(25/5, 28/5)). </p>
+<p class="txts">Does this have the semantics of an assignment when the Reduce subprogram is a
+function? &nbsp;(Yes.)</p>
 
-<p class="txts">The description of the dynamic semantics of Reduction Expressions talks about
-&quot;saving&quot; the value of each call on the Reduce subprogram back into the accumulator (RM
-4.5.10(25/5, 28/5)). &nbsp;Does this have the semantics of an assignment when the Reduce subprogram
-is a function? (Yes.)</p>
-
-<p class="txts">Should this be clarified somehow? (Yes.)</p>
-
 <p class="text">Do we need to separately mention that the tag comes from the initial value in the
 class-wide case? &nbsp;Note that the class-wide case is not mentioned in the definition of
 &quot;constrained by its initial value&quot; in 3.3.1 (although it is mentioned in AARM
 3.3.1(33.b)). &nbsp;(Yes, clarify in an AARM note.)</p>
 <h2 class="head">!recommendation</h2>
-
 <p class="txts">Because the wording is trying to capture the semantics of both the case where
 Reduce is a function and Reduce is a procedure, the somewhat ambiguous term &quot;saving&quot; was
 used in the dynamic semantics. &nbsp;We should clarify with an AARM note that &quot;saving&quot; in
@@ -89,11 +82,10 @@
 saved back in the overall accumulator&quot; has the semantics of an assignment of the function
 result into the accumulator, including associated finalization/adjustment as appropriate.</p>
 <h2 class="head">!discussion</h2>
-
 <p class="txts">To minimize implementation burden and avoid surprises, we do not expect any special
 semantics for the implementation of a reduction accumulator. &nbsp;It should be implemented as a
 normal variable of the subtype Accum_Type, initialized by its Initial_Value, and normal assignment,
-with any associated finalization/adustument, should be used to &quot;save&quot; the result of a
+with any associated finalization/adjustument, should be used to &quot;save&quot; the result of a
 Reduce function as the new value of the accumulator.</p>
 
 <p class="text">Of course it would be great if a compiler could warn a user who makes the mistake
@@ -103,80 +95,73 @@
 <h2 class="head">!example</h2>
 <p class="txts">The implication of using normal &quot;constrained-by-initial-value&quot; and
 &quot;assignment&quot; semantics are apparent if Accum_Type is an unconstrained array subtype such
-as String, as this is almost certain to fail with a Constraint_Error, because the accumulator in
-such a case would be constrained by its initial value, which is the empty string in this case, and
-so any further assignment to the accumulator of the result of calling the reduction function
+as String, as this is almost certain to fail by raising a Constraint_Error, because the accumulator
+in such a case would be constrained by its initial value, which is the empty string in this case,
+and so any further assignment to the accumulator of the result of calling the reduction function
 &quot;&amp;&quot; will fail unless the result is still an empty string.</p>
 
 <p class="txts">The correct approach is to use a structure that can grow as the resulting
 concatenation grows, such as an Unbounded_String or a Vector.</p>
 
-<a id="t.7060e27765d59272fdf541669978ff0b28e8af43"></a><a id="t.0"></a><table class="c20"><tr class="c11"><td class="c21">
-<p class="codt"><b>procedure</b> Foo <b>is</b><br>
- &nbsp; &nbsp;<b>function</b> F (N : Natural) <b>return</b> String <b>is</b><br>
- &nbsp; &nbsp;<b>begin</b><br>
- &nbsp; &nbsp; &nbsp; <b>return</b> String&#39;(1 .. N =&gt; (<b>if</b> N <b>mod</b> 2 = 0
+<p class="codb"><b>procedure</b> Foo <b>is</b><br>
+&nbsp; &nbsp; <b>function</b> F (N : Natural) <b>return</b> String <b>is</b><br>
+&nbsp; &nbsp; <b>begin</b><br>
+&nbsp; &nbsp; &nbsp; &nbsp;<b>return</b> String&#39;(1 .. N =&gt; (<b>if</b> N <b>mod</b> 2 = 0
 <b>then</b> &#39;X&#39; <b>else</b> &#39;Y&#39;));<br>
- &nbsp; &nbsp;<b>end</b> F;<br>
+&nbsp; &nbsp; <b>end</b> F;<br>
 <br>
- &nbsp; &nbsp;S : <b>constant</b> String := [<b>for</b> I <b>in</b> 1 .. 5 =&gt; F (I)]&#39;Reduce
+&nbsp; &nbsp; S : <b>constant</b> String := [<b>for</b> I <b>in</b> 1 .. 5 =&gt; F(I)]&#39;Reduce
 (&quot;&amp;&quot;, &quot;&quot;);<br>
 <b>begin</b><br>
- &nbsp; &nbsp;<b>pragma</b> Assert (S&#39;Length = 15);<br>
+&nbsp; &nbsp; <b>pragma</b> Assert (S&#39;Length = 15);<br>
 <b>end</b> Foo;</p>
-</td></tr></table><p class="text">&nbsp;</p>
+<p class="text">&nbsp;</p>
 <p class="text">The above will fail during the evaluation of &#39;Reduce as soon as the result of
-&quot;&amp;&quot; is anything but an empty string.</p>
+&quot;&amp;&quot; is anything other than an empty string.</p>
 <h2 class="head">!ACATS test</h2>
-
 <p class="text">It would be appropriate to have a test of a concatenating reduction expression,
 using both String and Unbounded_String, where the first is certain to raise Constraint_Error, and
 the latter should work.</p>
 <h2 class="head">!appendix</h2>
+<p class="from">From:<span class="name"> Stephen Baird</span></p>
+<p class="time">Sent: Thursday, August 4, 2022 at 4:29 PM</p>
 
-<p class="text">Stephen Baird
-&lt;<span class="c17"><a class="c10" href="mailto:baird@adacore.com">baird@adacore.com</a></span>&gt;
-Thu, Aug 4, 2022 at 4:29 PM</p>
-<p class="txts">To: Tucker Taft &lt;taft@adacore.com&gt;, Randy Brukardt
-&lt;<span class="c17"><a class="c10" href="mailto:randy@rrsoftware.com">randy@rrsoftware.com</a></span>&gt;</p>
-
 <p class="text">I was discussing reduction expressions with Ed, Bob, and Gary and a question came
 up.</p>
 <p class="txts">GNAT raises Constraint_Error executing the following example. It is not clear to me
 whether this is correct.</p>
 
-<a id="t.61df7d50deefc65df1940e5355bc5ad8ee00653a"></a><a id="t.1"></a><table class="c20"><tr class="c11"><td class="c21">
-<p class="a18"><b>with</b>&nbsp;Text_Io;<br>
-<b>procedure</b>&nbsp;<span class="a19">Foo</span>&nbsp;<b>is</b><br>
- &nbsp; &nbsp; <b>function</b>&nbsp;<span class="a19">F</span>&nbsp;(N :
-<span class="del">Natural</span>)
-<b>return</b>&nbsp;<span class="del">String</span>&nbsp;<b>is</b><br>
+<p class="sfn"><b>with</b>&nbsp;Text_Io;<br>
+<b>procedure</b>&nbsp;<span class="jo0">Foo</span>&nbsp;<b>is</b><br>
+ &nbsp; &nbsp; <b>function</b>&nbsp;<span class="jo0">F</span>&nbsp;(N :
+<span class="jo0">Natural</span>)
+<b>return</b>&nbsp;<span class="jo0">String</span>&nbsp;<b>is</b><br>
  &nbsp; &nbsp; <b>begin</b><br>
- &nbsp; &nbsp; &nbsp; &nbsp;Text_Io.Put_Line (<span class="del">&quot;In F, N
-=&quot;</span>&nbsp;&amp; N<span class="a20">&#39;Image</span>);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp;Text_Io.Put_Line (<span class="jo0">&quot;In F, N
+=&quot;</span>&nbsp;&amp; N<span class="k4c">&#39;Image</span>);<br>
  &nbsp; &nbsp; &nbsp;
-&nbsp;<b>return</b>&nbsp;String&#39;(<span class="del">1</span><span class="a21">&nbsp;.. N
+&nbsp;<b>return</b>&nbsp;String&#39;(<span class="jo0">1</span><span class="ehd">&nbsp;.. N
 =&gt;</span></p>
-<p class="a18">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(<b>if</b>&nbsp;N
-<b>mod</b>&nbsp;<span class="del">2</span>&nbsp;=
-<span class="del">0</span>&nbsp;<b>then</b>&nbsp;<span class="del">&#39;X&#39;</span>&nbsp;<b>else</b>&nbsp;<span class="del">&#39;Y&#39;</span>));<br>
+<p class="sfn">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(<b>if</b>&nbsp;N
+<b>mod</b>&nbsp;<span class="jo0">2</span>&nbsp;=
+<span class="jo0">0</span>&nbsp;<b>then</b>&nbsp;<span class="jo0">&#39;X&#39;</span>&nbsp;<b>else</b>&nbsp;<span class="jo0">&#39;Y&#39;</span>));<br>
  &nbsp; &nbsp; <b>end</b>;<br>
 <br>
- &nbsp; &nbsp;<b>function</b>&nbsp;<span class="a19">Cat</span>&nbsp;(S1, S2 :
-<span class="del">String</span>)
-<b>return</b>&nbsp;<span class="del">String</span>&nbsp;<b>renames</b>&nbsp;<span class="del">&quot;&amp;&quot;</span>;<br>
- &nbsp; &nbsp;<span class="a22">-- &nbsp;eliminate any overload resolution</span><br>
- &nbsp; &nbsp;<span class="a22">-- &nbsp;questions by introducing a rename</span><br>
+ &nbsp; &nbsp;<b>function</b>&nbsp;<span class="jo0">Cat</span>&nbsp;(S1, S2 :
+<span class="jo0">String</span>)
+<b>return</b>&nbsp;<span class="jo0">String</span>&nbsp;<b>renames</b>&nbsp;<span class="jo0">&quot;&amp;&quot;</span>;<br>
+ &nbsp; &nbsp;<span class="jmw">-- &nbsp;eliminate any overload resolution</span><br>
+ &nbsp; &nbsp;<span class="jmw">-- &nbsp;questions by introducing a rename</span><br>
 <br>
  &nbsp; &nbsp;S :
-<b>constant</b>&nbsp;<span class="del">String</span><span class="a21">&nbsp;:=</span></p>
-<p class="a18">&nbsp; &nbsp; &nbsp; &nbsp; [<b>for</b>&nbsp;I
-<b>in</b>&nbsp;<span class="del">1</span>&nbsp;.. <span class="del">5</span>&nbsp;=&gt; F
-(I)]<span class="a20">&#39;Reduce</span>&nbsp;(Cat, <span class="del">&quot;&quot;</span>);<br>
+<b>constant</b>&nbsp;<span class="jo0">String</span><span class="ehd">&nbsp;:=</span></p>
+<p class="sfn">&nbsp; &nbsp; &nbsp; &nbsp; [<b>for</b>&nbsp;I
+<b>in</b>&nbsp;<span class="jo0">1</span>&nbsp;.. <span class="jo0">5</span>&nbsp;=&gt; F
+(I)]<span class="k4c">&#39;Reduce</span>&nbsp;(Cat, <span class="jo0">&quot;&quot;</span>);<br>
 <b>begin</b><br>
  &nbsp; &nbsp;Text_Io.Put_Line (S);<br>
 <b>end</b>&nbsp;Foo;</p>
-</td></tr></table><p class="text">&nbsp;</p>
+<p class="text">&nbsp;</p>
 <p class="text">We declare an accumulator object initialized to the initial value and then later on
 we get </p>
 <p class="text">Constraint_Error when we try to update the accumulator with a value that has a
@@ -191,21 +176,19 @@
 <p class="txts">as an assignment. Is that a bug?</p>
 
 <p class="text">FWIW, this notion of a more general form of update reminds me of the</p>
-<a id="t.7e5e436e68d6e40d84164fa795b49fb1adcefbee"></a><a id="t.2"></a><table class="c20"><tr class="c11"><td class="c21">
-<p class="a18"><b>for</b>&nbsp;Elem
+<p class="sfn"><b>for</b>&nbsp;Elem
 <b>of</b>&nbsp;Some_Container_With_An_Indefinite_Element_Subtype <b>loop</b>&nbsp;...<br>
 <b>end</b>&nbsp;<b>loop</b>;</p>
-</td></tr></table><p class="txts">case, where the tag/bounds/discriminants of Elem might change
-from one iteration to the next.</p>
+<p class="txts">case, where the tag/bounds/discriminants of Elem might change from one iteration to
+the next.</p>
 
-<p class="text">What do you think?</p>
-<p class="text">Thanks,</p>
-<p class="txts">-- Steve</p>
+<p class="txts">What do you think?</p>
 
+<hr><p class="txts">&nbsp;</p>
 
-<p class="text">AdaCore Mail - reduction expressions question 8/8/22, 3:10 PM</p>
-<p class="text">&nbsp;To: Stephen Baird &lt;baird@adacore.com&gt;</p>
-<p class="text">Cc: Randy Brukardt &lt;randy@rrsoftware.com&gt;</p>
+<p class="from">From:<span class="name"> Tucker Taft</span></p>
+<p class="text">Sent: 8/8/22, 3:10 PM</p>
+<p class="text">&nbsp;</p>
 <p class="txts">This was intended to use regular assignment, so the accumulator needs to be
 something like an Unbounded_String if you are doing concatenations. There was no expectation that a
 new accumulator object was being created on each step. The memory management of that would be a
@@ -214,23 +197,22 @@
 initialized (and presumably taking its constraint if the accum subtype is indefinite) from the
 initial expression.</p>
 
-<p class="text">Perhaps an AARM note would help, or the use of the word &quot;assign&quot; at least
+<p class="txts">Perhaps an AARM note would help, or the use of the word &quot;assign&quot; at least
 for the case when Reducer is a function. When Reducer is a procedure, the assignment presumably
 happens inside the procedure, but the accumulator object is in either case, a single variable
 allocated at the point of the reduction expression, and not something that morphs on each reduction
 step into something else.</p>
-<p class="txts">-Tuck</p>
+
+<hr><p class="txts">&nbsp;</p>
 
-<p class="text">Stephen Baird
-&lt;<span class="c17"><a class="c10" href="mailto:baird@adacore.com">baird@adacore.com</a></span>&gt;
-Thu, Aug 4, 2022 at 5:42 PM</p>
-<p class="text">To: Tucker Taft &lt;taft@adacore.com&gt;</p>
-<p class="text">Cc: Randy Brukardt &lt;randy@rrsoftware.com&gt;</p>
+<p class="from">From:<span class="name"> Stephen Baird</span></p>
+<p class="time">Sent: Thursday, August 4, 2022 at 5:42 PM</p>
+
 <p class="txts">Thanks for the clarification.</p>
 
-<p class="txts">&nbsp; I do think the AARM ought to state explicitly that there is an assignment
-going on in the function case, since this can involve Adjust/Finalize calls and predicate checks,
-in addition to constraint checks.</p>
+<p class="txts">I do think the AARM ought to state explicitly that there is an assignment going on
+in the function case, since this can involve Adjust/Finalize calls and predicate checks, in
+addition to constraint checks.</p>
 
 <p class="text">It should also state explicitly that if the accumulator subtype is indefinite, then
 the accumulator object is constrained by its initial value. And perhaps we need to separately
@@ -238,15 +220,14 @@
 class-wide</p>
 <p class="txts">case is not mentioned in the definition of &quot;constrained by its initial
 value&quot; in 3.3.1 (although it is mentioned in AARM 3.3.1(33.b)).</p>
+
+<p class="txts">Sound reasonable?</p>
 
-<p class="text">Sound reasonable? -- Steve</p>
-<p class="txts">-- Steve</p>
+<hr><p class="txts">&nbsp;</p>
 
-<p class="text">To: Stephen Baird &lt;baird@adacore.com&gt;</p>
-<p class="text">Cc: Randy Brukardt &lt;randy@rrsoftware.com&gt;</p>
-<p class="txts">Mon, Aug 8, 2022 at 2:31 PM</p>
+<p class="from">From:<span class="name"> Tucker Taft</span></p>
+<p class="time">Sent: Monday, Aug 8, 2022 at 2:31 PM</p>
 
-<p class="text">On Thu, Aug 4, 2022 at 5:42 PM Stephen Baird &lt;baird@adacore.com&gt; wrote:</p>
 <p class="ind">.... And perhaps we need to separately mention that the tag</p>
 <p class="ind">comes from the initial value in the class-wide case; note that the class-wide</p>
 <p class="inds">case is not mentioned in the definition of &quot;constrained by its initial
@@ -256,7 +237,6 @@
 <p class="ind">The tag of an object of a class-wide tagged type is that of its initialization
 expression.</p>
 <p class="text">So this one seems pretty unambiguous.</p>
-<p class="text">-Tuck</p>
 <p class="txts">...</p>
 
 

Questions? Ask the ACAA Technical Agent