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

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

--- ai22s/ai22-0054-1.html	2022/10/29 04:38:05	1.1
+++ ai22s/ai22-0054-1.html	2023/01/21 09:16:19	1.2
@@ -1,10 +1,10 @@
-<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0054-1/01</title>
+<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0054-1/02</title>
 <style type="text/css">
 table td,table th{padding:0}
-.c15{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}
-.c10{border-spacing:0;border-collapse:collapse;margin-right:auto}
-.c12{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}
-.c17{height:0pt}
+.c14{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}
+.c2{border-spacing:0;border-collapse:collapse;margin-right:auto}
+.c19{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}
+.c16{height:0pt}
 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}
@@ -13,14 +13,15 @@
 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.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:#005500}
+SPAN.ins{color:#008800}
 SPAN.ntrm{font-family:"Arial","Liberation Sans",sans-serif}
 P.a1{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}
 </style>
-</head><body class="c12 doc-content"><p class="a1">AI22-0054-1</p>
+</head><body class="c19 doc-content"><p class="a1">AI22-0054-1</p>
 <p class="head">!standard 4.1.4(6/5) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;22-10-28 &nbsp;AI22-0054-1/01</p>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;23-01-23 &nbsp;AI22-0054-1/02</p>
 <p class="head">!class binding interpretation 22-10-28</p>
+<p class="head">!status ARG Approved 15-0-0 &nbsp;23-01-19</p>
 <p class="head">!status work item 22-10-28</p>
 <p class="head">!status received 22-05-09</p>
 <p class="head">!priority Low</p>
@@ -33,11 +34,11 @@
 <h2 class="head">!issue</h2>
 <p class="txts">Consider a package where multiple overloaded functions are declared:</p>
 
-<a id="t.8550921085fe59395b5f1d5a0fe4a760ed120121"></a><a id="t.0"></a><table class="c10"><tr class="c17"><td class="c15">
+<a id="t.63bfc9fce751d753094568eb8617c3b334f88202"></a><a id="t.0"></a><table class="c2"><tr class="c16"><td class="c14">
 <p class="codt">&nbsp; &nbsp;<b>package</b> Pkg <b>is</b><br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<b>function</b> F (X : Integer) <b>return</b> Integer;<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<b>function</b> F (X : Float) <b>return</b> Integer <b>with</b>
-Post =&gt; F&#39;Result /= 0;<br>
+ &nbsp; &nbsp; &nbsp;<b>function</b> F (X : Integer) <b>return</b> Integer;<br>
+ &nbsp; &nbsp; &nbsp;<b>function</b> F (X : Float) <b>return</b> Integer <b>with</b> Post =&gt;
+F&#39;Result /= 0;<br>
  &nbsp; <b>end</b> Pkg;</p>
 </td></tr></table><p class="text">&nbsp;</p>
 <p class="txts">It appears that the prefix of the attribute Result is ambiguous, as attribute
@@ -71,10 +72,10 @@
 denoted by the <span class="ntrm">prefix</span> is considered a Name Resolution Rule for the
 <span class="ntrm">prefix</span>.}</span></p>
 
-<p class="word">AARM Discussion: Attributes that are subject to such &quot;may only be referenced
-from within&quot; requirements include the Caller and Result attributes. The Count attribute is not
-such an attribute; it only is required to be inside of the enclosing task containing the
-prefix.</p>
+<p class="word"><span class="ins">{AARM Discussion: Attributes that are subject to such &quot;may
+only be referenced from within&quot; requirements include the Caller and Result attributes. The
+Count attribute is not such an attribute; it only is required to be inside of the enclosing task
+containing the prefix.}</span></p>
 <h2 class="head">!discussion</h2>
 <p class="txts">AARM 4.1.4(6.d-6.h) specifically talk about how attributes do not resolve even when
 only one possible prefix is legal. So it is clear that the language rules as written intend for
@@ -96,15 +97,42 @@
 prefix is ambiguous:</p>
 
 <p class="text">&nbsp; </p>
-<a id="t.072af00b8dd0471a40f97f69f95c6a23935ce1b4"></a><a id="t.1"></a><table class="c10"><tr class="c17"><td class="c15">
+<a id="t.23b643f6453d8ff614a7319138629d0a5e16049d"></a><a id="t.1"></a><table class="c2"><tr class="c16"><td class="c14">
 <p class="codt">&nbsp; &nbsp;with&nbsp;System; <b>use</b> System;<br>
  &nbsp; <b>package</b> Pkg2 <b>is</b><br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<b>function</b> F (X : Integer) <b>return</b> Integer;<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<b>function</b> F (X : Float) <b>return</b> Integer
-<b>with</b><br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Post =&gt; F&#39;Address /= Null_Address;<br>
+ &nbsp; &nbsp; &nbsp;<b>function</b> F (X : Integer) <b>return</b> Integer;<br>
+ &nbsp; &nbsp; &nbsp;<b>function</b> F (X : Float) <b>return</b> Integer <b>with</b><br>
+ &nbsp; &nbsp; &nbsp; &nbsp; Post =&gt; F&#39;Address /= Null_Address; -- <i>Illegal.</i><br>
  &nbsp; <b>end</b> Pkg2;</p>
-</td></tr></table><h2 class="head">!ACATS test</h2>
+</td></tr></table><h2 class="head">!corrigendum 4.1.4(6/5)</h2>
+<p class="text">@drepl</p>
+<p class="text">In an @fa{attribute_reference} that is not a @fa{reduction_attribute_reference}, if
+the @fa{attribute_designator} is for an attribute defined for (at least some) objects of an access
+type, then the @fa{prefix} is never interpreted as an @fa{implicit_dereference}; otherwise</p>
+<p class="text">(and for all @fa{range_attribute_reference}s and
+@fa{reduction_attribute_reference}s), if there is a @fa{prefix} and the type of the @fa{name}
+within the @fa{prefix} is of an access type, the @fa{prefix} is interpreted as an
+@fa{implicit_dereference}. Similarly, if the @fa{attribute_designator} is for an attribute defined
+for (at least some) functions, then the</p>
+<p class="text">@fa{prefix} is never interpreted as a parameterless @fa{function_call}; otherwise
+(and for all @fa{range_attribute_reference}s and @fa{reduction_attribute_reference}s), if there is
+a @fa{prefix} and the @fa{prefix} consists of a @fa{name} that denotes a function, it is</p>
+<p class="text">interpreted as a parameterless @fa{function_call}.</p>
+<p class="text">@dby</p>
+<p class="text">In an @fa{attribute_reference} that is not a @fa{reduction_attribute_reference}, if
+the @fa{attribute_designator} is for an attribute defined for (at least some) objects of an access
+type, then the @fa{prefix} is never interpreted as an @fa{implicit_dereference}; otherwise</p>
+<p class="text">(and for all @fa{range_attribute_reference}s and
+@fa{reduction_attribute_reference}s), if there is a @fa{prefix} and the type of the @fa{name}
+within the @fa{prefix} is of an access type, the @fa{prefix} is interpreted as an
+@fa{implicit_dereference}. Similarly, if the @fa{attribute_designator} is for an attribute defined
+for (at least some) functions, then the @fa{prefix} is never interpreted as a parameterless
+@fa{function_call}; otherwise (and for all @fa{range_attribute_reference}s and
+@fa{reduction_attribute_reference}s), if there is a @fa{prefix} and the @fa{prefix} consists of a
+@fa{name} that denotes a function, it is interpreted as a parameterless @fa{function_call}. Any
+requirement that a given @fa{attribute_designator} may only be referenced from within a construct
+denoted by the @fa{prefix} is considered a Name Resolution Rule for the @fa{prefix}.</p>
+<h2 class="head">!ACATS test</h2>
 <p class="text">An ACATS C-Test should check a case like that given in the !Issue, and a</p>
 <p class="text">similar case for the Caller attribute.</p>
 <h2 class="head">!appendix</h2>

Questions? Ask the ACAA Technical Agent