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

Differences between 1.5 and version 1.6
Log of other versions for file ai22s/ai22-0024-1.html

--- ai22s/ai22-0024-1.html	2023/02/02 05:32:26	1.5
+++ ai22s/ai22-0024-1.html	2023/06/27 04:16:10	1.6
@@ -2,11 +2,10 @@
 <style type="text/css">
 table td,table th{padding:0}
 .c12{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}
-.c27{border-spacing:0;border-collapse:collapse;margin-right:auto}
-.c11{text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;color:#1155cc;text-decoration:underline}
-.c32{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}
-.c9{color:inherit;text-decoration:inherit}
-.c0{height:0pt}
+.c21{border-spacing:0;border-collapse:collapse;margin-right:auto}
+.c13{color:inherit;text-decoration:inherit}
+.c27{height:0pt}
+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}
@@ -14,6 +13,7 @@
 P.wrds{margin-bottom:0; margin-top:0; margin-left:36pt; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:12pt; font-family:"Times New Roman","Times",serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:4
00; 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.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}
 UL.bull{margin-bottom:0; margin-top:0; margin-left:12pt; margin-right:0; padding-top:0pt; color:#000000; font-size:11pt; padding-bottom:3pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15;text-align:left; font-weight:400; text-decorati
on:none; vertical-align:baseline; font-style:normal; list-style: disc outside}
@@ -22,18 +22,19 @@
 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}
-SPAN.ins{color:#008800}
+SPAN.ins{color:#007700}
 SPAN.ntrm{font-family:"Arial","Liberation Sans",sans-serif}
-P.a4{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-align
:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
-SPAN.a35{text-decoration-skip-ink:none; -webkit-text-decoration-skip:none; color:#1155cc; text-decoration:underline}
+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.g6p{text-decoration-skip-ink:none; -webkit-text-decoration-skip:none; color:#1155cc; text-decoration:underline}
 </style>
-</head><body class="c32 doc-content"><p class="a4">AI22-0024-1</p>
+</head><body class="body"><p class="l3h">AI22-0024-1</p>
 <p class="head">!standard 4.1.3(9.2/3) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;23-02-01
 &nbsp;AI22-0024-1/06</p>
 <p class="head">!standard 6.4(9.1/5)</p>
 <p class="head">!class binding interpretation 22-01-20</p>
 <p class="head">!status Corrigendum 1-2022 &nbsp;22-09-09</p>
+<p class="head">!status WG9 Approved 23-06-13</p>
 <p class="head">!status ARG Approved &nbsp;8-0-1 &nbsp;22-09-09</p>
 <p class="head">!status work item 22-01-20</p>
 <p class="head">!status received 21-04-28</p>
@@ -54,9 +55,8 @@
 <h2 class="head">!issue</h2>
 <p class="text">Following is a distillation of another ACATS test that gets different results </p>
 <p class="text">in different Ada 2012 compilers:</p>
-<a id="t.0539a8d78e6c3da25e277d06a9eed551b6241ac7"></a><a id="t.0"></a><table class="c27"><tr class="c0"></tr></table><p class="text">&nbsp;</p>
-<a id="t.0a83fcf6f0060650be3d1940649573282238d897"></a><a id="t.1"></a><table class="c27"><tr class="c0"><td class="c12">
-<p class="codt"><b>procedure</b> B950001 <b>is</b><br>
+<table class="c21"><tr class="c27"></tr></table><p class="text">&nbsp;</p>
+<p class="codb"><b>procedure</b> B950001 <b>is</b><br>
 &nbsp; &nbsp;<b>package</b> Nested <b>is</b><br>
 &nbsp; &nbsp; &nbsp; <b>type</b> Intf <b>is</b> <b>synchronized</b> <b>interface</b>;<br>
 &nbsp; &nbsp; &nbsp; <b>procedure</b> PEN1 (Param : <b>in</b> <b>out</b> Intf) <b>is</b>
@@ -83,7 +83,7 @@
 &nbsp; &nbsp; &nbsp; <b>null</b>;<br>
 &nbsp; &nbsp;<b>end</b> Test;<br>
 ...</p>
-</td></tr></table><p class="text">&nbsp;</p>
+<p class="text">&nbsp;</p>
 <p class="txts">The test is trying to check legality of prefixes of prefixed views.</p>
 
 <p class="text">However, one of the tested compilers rejected the &quot;OK&quot; instantiation
@@ -96,11 +96,10 @@
 
 <p class="txts">The test also renames these calls:</p>
 
-<a id="t.99e97e28b61f37c8758585a612fac6cc328ca2d4"></a><a id="t.2"></a><table class="c27"><tr class="c0"><td class="c12">
-<p class="codt"><b>procedure</b> RPE139 <b>renames</b> Intf_In_Parm.PEN1; &nbsp;-- ERROR: Prefix is
+<p class="codb"><b>procedure</b> RPE139 <b>renames</b> Intf_In_Parm.PEN1; &nbsp;-- ERROR: Prefix is
 constant<br>
 <b>procedure</b> RPE149 <b>renames</b> Intf_In_Out_Parm.PEN1; -- OK. Prefix is variable</p>
-</td></tr></table><p class="text">&nbsp;</p>
+<p class="text">&nbsp;</p>
 <p class="text">Would a call on RPE149 be legal? (Yes)</p>
 <h2 class="head">!recommendation</h2>
 <p class="text">One situation in Ada that resembles this one is the case where a formal derived (or
@@ -111,16 +110,16 @@
 <ul class="wbl"><li>For the purposes of defining the primitive operations of the formal type, each
 of the primitive operations of the actual type is considered to be a subprogram (with an intrinsic
 calling convention &mdash; see
-<span class="c11"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-6-3-1.html">6.3.1</a></span>)
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-6-3-1.html">6.3.1</a></span>)
 whose body consists of a dispatching call upon the corresponding operation of <i>T</i>, with its
 formal parameters as the actual parameters. If it is a function, the result of the dispatching call
 is returned.</li>
 <li>If the corresponding operation of <i>T</i> has no controlling formal parameters, then the
 controlling tag value is determined by the context of the call, according to the rules for
 tag-indeterminate calls (see
-<span class="c11"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-3-9-2.html">3.9.2</a></span>
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-3-9-2.html">3.9.2</a></span>
 and
-<span class="c11"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-5-2.html">5.2</a></span>).
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-5-2.html">5.2</a></span>).
 In the case where the tag would be statically determined to be that of the formal type, the call
 raises Program_Error. If such a function is renamed, any call on the renaming raises
 Program_Error.</li>
@@ -131,29 +130,29 @@
 <p class="text">If we look at the current rules relating to prefixed views, we find that the
 profile of a prefixed view is defined in 4.1.3(9.2/3):</p>
 <p class="wrds">The
-<span class="c11"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
 denotes a view of this subprogram that omits the first formal parameter. This view is called a
 <i>prefixed view</i> of the subprogram, and the
-<span class="c11"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
 of the
-<span class="c11"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
 (after any implicit dereference) is called the <i>prefix</i> of the prefixed view.</p>
 
 <p class="text">&nbsp;The semantics of a call on a prefixed view are given in 6.4(9.1/5):</p>
 <p class="wrds">If the
-<span class="c11"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0091">name</a></span>
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0091">name</a></span>
 or
-<span class="c11"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
 of a subprogram call denotes a prefixed view (see
-<span class="a35"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html">4.1.3</a></span>),
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html">4.1.3</a></span>),
 the subprogram call is equivalent to a call on the underlying subprogram, with the first actual
 parameter being provided by the
-<span class="c11"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
 of the prefixed view (or the Access attribute of this
-<span class="c11"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
 if the first formal parameter is an access parameter), and the remaining actual parameters given by
 the
-<span class="c11"><a class="c9" href="http://www.ada-auth.org/standards/2xaarm/html/AA-6-4.html#S0219">actual_parameter_part</a></span>,
+<span class="g6p"><a class="c13" href="http://www.ada-auth.org/standards/2xaarm/html/AA-6-4.html#S0219">actual_parameter_part</a></span>,
 if any. </p>
 
 <p class="txts">This does not clarify the properties of a <i>renaming</i> of a prefixed view when
@@ -270,7 +269,7 @@
 
 <p class="txts">It might help to look at an example:</p>
 
-<a id="t.6eb1b62e67134fed732e2319eb5d650e67ac3f6d"></a><a id="t.3"></a><table class="c27"><tr class="c0"><td class="c12">
+<table class="c21"><tr class="c27"><td class="c12">
 <p class="codt"><b>package</b> P1 <b>is</b><br>
 &nbsp; &nbsp;<b>type</b> Intf <b>is</b> <b>interface</b>;<br>
 &nbsp; &nbsp;<b>function</b> F1 (A : <b>in</b> Intf; B : <b>in</b> Natural)<br>
@@ -309,7 +308,7 @@
 &nbsp; &nbsp; &nbsp; <b>null</b>;<br>
 &nbsp; &nbsp;<b>end</b> <b>if</b>;<br>
 <b>end</b> Test;</p>
-</td></tr><tr class="c0"><td class="c12">
+</td></tr><tr class="c27"><td class="c12">
 <p class="codt">&nbsp;</p>
 </td></tr></table><p class="text">&nbsp;</p>
 <p class="txts">Functions R1a and R1b correspond to the two alternatives of the first case above.

Questions? Ask the ACAA Technical Agent