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

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

--- ai22s/ai22-0041-1.html	2022/06/17 06:13:28	1.1
+++ ai22s/ai22-0041-1.html	2022/06/17 06:41:34	1.2
@@ -1,24 +1,32 @@
-<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0041-1/01</title>
+<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0041-1/02</title>
 <style type="text/css">
 table td,table th{padding:0}
-.c22{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:452.2pt;border-top-color:#000000;border-bottom-style:solid}
-.c11{margin-left:15.8pt;border-spacing:0;border-collapse:collapse;margin-right:auto}
-.c5{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}
-.c20{height:0pt}
+.c18{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:452.2pt;border-top-color:#000000;border-bottom-style:solid}
+.c9{margin-left:15.8pt;border-spacing:0;border-collapse:collapse;margin-right:auto}
+.c12{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}
+.c19{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}
 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.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}
+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:#005500}
+SPAN.del{color:#880000}
 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="c5"><p class="a1">AI22-0041-1</p>
+</head><body class="c12"><p class="a1">AI22-0041-1</p>
 <p class="head">!standard 7.4(6/3) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-&nbsp;22-06-14 &nbsp;AI22-0041-1/01</p>
+&nbsp;22-06-15 &nbsp;AI22-0041-1/02</p>
+<p class="head">!standard 7.4(7/2)</p>
+<p class="head">!standard 7.4(7.1/2)</p>
 <p class="head">!class binding interpretation 22-06-14</p>
 <p class="head">!status work item 22-06-14</p>
 <p class="head">!status received 22-06-07</p>
@@ -28,8 +36,7 @@
 <p class="head">!subject Deferred constant subtype compatibility </p>
 <h2 class="head">!summary</h2>
 
-<p class="txts">A dDeferred constant should not be completed with an incompatible subtype.</p>
-
+<p class="text">A deferred constant should not be completed with an incompatible subtype.</p>
 <h2 class="head">!issue</h2>
 
 <p class="txts">The subtype given in the declaration of a deferred constant is part of the
@@ -43,7 +50,7 @@
 <p class="txts">Should this example be legal? (No.)</p>
 
 
-<a id="t.ac08b858acc96faca5808079df5e9650e7b332e1"></a><a id="t.0"></a><table class="c11"><tr class="c20"><td class="c22">
+<a id="t.ac08b858acc96faca5808079df5e9650e7b332e1"></a><a id="t.0"></a><table class="c9"><tr class="c19"><td class="c18">
 <p class="codt"><b>package</b> Bad_Deferred_Constant <b>is</b><br>
  &nbsp; <b>pragma</b> Assertion_Policy (Check);<br>
  &nbsp; <b>subtype</b> S <b>is</b> String <b>with</b> Dynamic_Predicate =&gt; (S&#39;Length &gt;=
@@ -53,7 +60,6 @@
  &nbsp; X : <b>constant</b> String := &quot;&quot;; -- legal?<br>
 <b>end</b> Bad_Deferred_Constant;</p>
 </td></tr></table><h2 class="head">!recommendation</h2>
-
 <p class="txts">Require (at compile time) that the subtype used in the completion of a deferred
 constant shall be &ldquo;statically compatible&rdquo; with the subtype used in the initial
 declaration.</p>
@@ -76,17 +82,35 @@
 defined by S2 shall statically match the constraint defined by S1. [Redundant: If the subtype S1 of
 the deferred constant is unconstrained, then the full declaration is still allowed to impose a
 constraint.]</p>
+<p class="inst">Modify 7.4(7/2):</p>
+<ul class="wbl"><li>If the deferred constant declaration contains the reserved word <b>aliased</b>,
+then the full declaration shall also<span class="ins">{.}</span><span class="del">[;]</span></li>
+</ul>
+<p class="inst">Delete 7.4(7.1/2):</p>
+<ul class="wbl"><li>If the subtype of the deferred constant declaration excludes null, then the
+subtype of the full declaration shall also exclude null.</li>
+</ul>
 <h2 class="head">!discussion</h2>
-
-<p class="text">One could imagine dealing with this issue by somehow checking the value given in
+<p class="txts">One could imagine dealing with this issue by somehow checking the value given in
 the completion of a deferred constant against both of the two subtypes. Adding complexity to the
 dynamic semantics of deferred constants does not seem like the right approach; better to deal with
 the issue statically.</p>
-<h2 class="head">!example</h2>
 
-<p class="text">See !Issue section.</p>
+<p class="text">Note that the definition of static compatibility includes a check for null
+exclusions (4.9.1(7/3)). Therefore, with this change, the rule 7.4(7.1/2) becomes redundant and we
+remove it as well. The requirement for static matching for constrained types could also have been
+removed, but that seemed like an unnecessary change that could increase the work for implementers
+with no real gain.</p>
+<h2 class="head">!example</h2>
+<p class="text">(See issue.)</p>
 <h2 class="head">!ACATS test</h2>
 <p class="text">A B-test similar to the given example could be written.</p>
 <h2 class="head">!appendix</h2>
+<p class="from">From:<span class="name"> Randy Brukardt</span></p>
+<p class="time">Sent: Wednesday, June 15, 2022 &nbsp;9:27 PM</p>
+
+<p class="txts">The bullet 7.4(7.1/2) is now redundant, as it is covered by static compatibility -
+specifically, 4.9.1(7/3). The AI has been updated to reflect this.</p>
 
+<p class="text">********************************************************************************************</p>
 </body></html> 

Questions? Ask the ACAA Technical Agent