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

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

--- ai22s/ai22-0061-1.html	2023/04/07 06:37:00	1.2
+++ ai22s/ai22-0061-1.html	2023/04/22 06:19:57	1.3
@@ -1,4 +1,4 @@
-<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0061-1/02</title>
+<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0061-1/03</title>
 <style type="text/css">
 table td,table th{padding:0}
 BODY.body{background-color:#ffffff; max-width:468pt; padding:72pt 72pt 72pt 72pt}
@@ -9,13 +9,14 @@
 P.wind{margin-bottom:0; margin-top:0; margin-left:60pt; 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.cbin{margin-bottom:0; margin-top:0; margin-left:36pt; 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}
 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}
 </style>
 </head><body class="body"><p class="l3h">AI22-0061-1</p>
 <p class="head">!standard 11.4.2(23/2) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;23-04-03
-&nbsp;AI22-0061-1/02</p>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;23-04-18
+&nbsp;AI22-0061-1/03</p>
 <p class="head">!class binding interpretation 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>
@@ -34,15 +35,14 @@
 <p class="text">If we have a pair of full-conformance-required expressions (for example, a default
 value for a formal parameter of a subprogram that has both a declaration and a body), then
 different assertion policies may be in effect at the places of the two expressions. If the
-expression contains an Assert pragma, then which assertion policy &ldquo;wins&rdquo;? (The
-assertion policy that is in effect at the place of the first expression); and similarly what if
-there are more than two copies of the expression, perhaps because a subprogram also has a
-subprogram_body_stub? &nbsp;(Same answer - the assertion policy that is in effect at the place of
-the first copy of the expression)</p>
+expression contains an Assert pragma, then which assertion policy &ldquo;wins&rdquo;?. Similarly
+what if there are more than two copies of the expression, perhaps because a subprogram also has a
+subprogram_body_stub? </p>
 <h2 class="head">!recommendation</h2>
 <p class="text">If we have two (or more) full-conformance-required copies of an expression, then
 the assertion policy that is in effect for the expression is the policy in effect at the place of
-the first of the copies.</p>
+the first of the copies. (Recall that there is always an assertion policy in effect for any place,
+even when no pragma applies to the place - see 11.4.2(10.4/3).)</p>
 <h2 class="head">!wording</h2>
 <p class="inst">Add after 11.4.2(23/2): [Dynamic Semantics]:</p>
 <p class="word">If two or more expressions are required to be fully conformant then only the
@@ -60,14 +60,18 @@
 conformance of two expressions is required, the assertion policy in effect at the place of the
 second expression is ignored.</p>
 <h2 class="head">!example</h2>
+<p class="txts">The case of a default parameter of a formal subprogram having different assertion
+policies could look like the following:</p>
 
-<p class="cbin"><b>declare<br>
-</b>&nbsp; &nbsp;<b>pragma</b> Assertion_Policy (Check)<br>
-&nbsp; &nbsp;<b>procedure </b>Proc (X : T := (<b>declare pragma</b> Assert (...); <b>begin</b>
-&hellip;));</p>
+<p class="cbin"><b>procedure </b>Example <b>is<br>
+</b>&nbsp; &nbsp;<b>pragma</b> Assertion_Policy (Check);<br>
+&nbsp; &nbsp;<b>procedure </b>Proc (X : T :=<br>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (<b>declare
+pragma</b> Assert (...); <b>begin</b> ...));</p>
 <p class="cbin">&nbsp; &nbsp;<b>pragma</b> Assertion_Policy (Ignore);<br>
-&nbsp; &nbsp;<b>procedure</b> Proc (X : T := (<b>declare pragma</b> Assert (...); <b>begin</b>
-&hellip;)) <b>is<br>
+&nbsp; &nbsp;<b>procedure</b> Proc (X : T :=<br>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (<b>declare
+pragma</b> Assert (...); <b>begin</b> ...)) <b>is<br>
 </b>&nbsp; &nbsp;<b>begin<br>
 </b>&nbsp; &nbsp; &nbsp; ...;<br>
 &nbsp; &nbsp;<b>end</b>;<br>

Questions? Ask the ACAA Technical Agent