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

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

--- ai22s/ai22-0094-1.html	2024/02/17 07:31:00	1.2
+++ ai22s/ai22-0094-1.html	2024/04/19 07:17:17	1.3
@@ -1,4 +1,4 @@
-<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0094-1/01</title>
+<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0094-1/02</title>
 <style type="text/css">
 table td,table th{padding:0}
 BODY.body{background-color:#ffffff; max-width:540pt; padding:36pt 36pt 36pt 36pt}
@@ -7,16 +7,21 @@
 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.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.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.btxt{margin-bottom:6pt; margin-top:6pt; margin-left:6pt; margin-right:6pt; padding-top:4pt; color:#000000; font-size:11pt; padding-bottom:4pt; padding-left:4pt; color:#000000; padding-right:4pt; border:1px solid black; font-family:"Arial","Liberation Sa
ns",sans-serif; line-height:1.15; text-align:left; 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.ins{color:#007700}
 </style>
 </head><body class="body"><p class="anum">AI22-0094-1</p>
 <p class="head">!standard 10.2.1(9.1/5) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;24-02-12
-&nbsp;AI22-0094-1/01</p>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;24-04-16
+&nbsp;AI22-0094-1/02</p>
 <p class="head">!standard 11.4.2(28/5)</p>
+<p class="head">!standard 13.12(8.3/1)</p>
+<p class="head">!standard 13.12(9.1/1)</p>
 <p class="head">!class Binding Interpretation 24-02-12</p>
 <p class="head">!status work item 23-12-14</p>
 <p class="head">!status received 23-12-14</p>
@@ -30,35 +35,50 @@
 <p class="text">In the discussion of AI22-0051, it was pointed out that adding or deleting an
 Assertion_Policy pragma should not change the preelaborability of any elaborable construct.</p>
 <h2 class="head">!recommendation</h2>
-<p class="text">State explicitly (as is already done in a similar case for freezing rules) that
+<p class="txts">State explicitly (as is already done in a similar case for freezing rules) that
 Assertion_Policy &nbsp;pragmas are ignored in determining preelaborability, and that instead all
-relevant assertion policies are assumed to be Check. In the &ldquo;Language Design
-Principles&rdquo; section of 11.4.2, state the general principle that a (legal) Assertion_Policy
-pragma should have no effect on the legality or the static semantics of any construct.</p>
+relevant assertion policies are assumed to be Check.</p>
+
+<p class="txts">In 11.4.2, state the general principle that a (legal) Assertion_Policy pragma
+should have no effect on the legality or the static semantics of any construct.</p>
+
+<p class="text">A consequence of that general principle is that an Assertion_Policy pragma should
+not have an effect on the meaning of a restrictions pragma. That also is stated explicitly.</p>
 <h2 class="head">!wording</h2>
-<p class="inst">&nbsp;Add after 10.2.1(9.1/5):</p>
+<p class="inst">Add after 10.2.1(9.1/5):</p>
 <p class="word">In determining whether the elaboration of an elaborable construct performs some
 action, an assertion policy of Check is assumed to be in effect everywhere and for all assertion
 aspects. &nbsp;[Redundant: Assertion_Policy pragmas are ignored in this determination.]</p>
-<p class="inst">&nbsp; &nbsp;Add after
-11.4.2(28/5)<sup><a href="#cmnt1" name="cmnt_ref1">[a]</a></sup>:</p>
+<p class="inst">Add after 11.4.2(28/5)<sup><a href="#cmnt1" name="cmnt_ref1">[a]</a></sup>:</p>
 <p class="word">NOTE 2: Adding or deleting a legal Assertion_Policy pragma has no impact on the
 legality or the static semantics of any construct. In particular, the rules pertaining to freezing
-(see 13.14) and the definition of preelaborability (see 10.2.1) are unaffected by Assertion_Policy
-pragmas.</p>
+(see 13.14), restrictions (see 13.12), and the definition of preelaborability (see 10.2.1) are
+unaffected by Assertion_Policy pragmas.</p>
+<p class="inst">Add after 13.12(8.3/1) (as another bulleted list item):</p>
+<ul class="wbl"><li>An assertion policy of Check is assumed to be in effect everywhere and for all
+assertion aspects, [Redundant: Assertion_Policy pragmas are ignored];</li>
+</ul>
+<p class="inst">Modify 13.12(9.1/1):</p>
+<p class="wrds">An implementation is permitted to omit restriction checks for code that is
+recognized at compile time to be unreachable and for which no code is generated
+<span class="ins">{, subject to the aforementioned assumption that an Assertion_Policy of Check is
+in effect everywhere}</span>.</p>
+
+<p class="word">AARM Discussion: This permission is not intended to allow omitting restriction
+checks for Ignored assertions.</p>
 <h2 class="head">!discussion</h2>
-<p class="text">Do we need to say something similar about restrictions? For example, a restriction
-violation of some sort in a disabled assertion?</p>
+<p class="text">(See Recommendation.)</p>
 <h2 class="head">!example</h2>
 <p class="cbin"><b>package</b> Example <b>is</b></p>
 <p class="cbin">&nbsp; &nbsp;<b>pragma</b> Preelaborate;</p>
 <p class="cbin">&nbsp; &nbsp;<b>pragma</b> Assertion_Policy (Ignore);</p>
 <p class="cbin">&nbsp; &nbsp;X : Integer := 111;</p>
 <p class="cbin">&nbsp; &nbsp;Y : Integer := 222;<br>
-&nbsp; &nbsp;<b>pragma</b> Assert (X &lt; Y); -- disabled assertion not preelaborable</p>
+&nbsp; &nbsp;<b>pragma</b> Assert (X &lt; Y); -- Illegal: disabled assertion not preelaborable</p>
 <p class="cbin"><b>end</b> Example;</p>
 <h2 class="head">!ACATS test</h2>
-<p class="text">A B-test similar to the example above would be appropriate.</p>
+<p class="text">A B-test similar to the example above would be appropriate; a B-Test of a
+restriction violation in an ignored pragma Assert is also needed.</p>
 <h2 class="head">!appendix</h2>
 
 <hr><p class="txts">&nbsp;</p>

Questions? Ask the ACAA Technical Agent