CVS difference for ai05s/ai05-0035-1.txt

Differences between 1.2 and version 1.3
Log of other versions for file ai05s/ai05-0035-1.txt

--- ai05s/ai05-0035-1.txt	2007/01/19 04:00:06	1.2
+++ ai05s/ai05-0035-1.txt	2007/07/26 02:58:05	1.3
@@ -1,8 +1,9 @@
-!standard 10.2.1(15.1/2)                                      07-01-17    AI05-0035-1/02
+!standard 10.2.1(15.1/2)                                      07-06-18    AI05-0035-1/03
 !standard 10.2.1(15.4/2)
 !standard 10.2.1(15.5/2)
 !standard 10.2.1(17/2)
 !class binding interpretation 07-01-12
+!status ARG Approved  8-0-2  07-06-03
 !status work item 07-01-12
 !status received 07-01-12
 !priority Medium
@@ -26,7 +27,7 @@
 1 - 10.2.1(15.4-15.5/2) apply to all named access-to-object types. However, derived
 access types do not declare storage pools (they use the ones declared by the parent
 type), and thus do not cause any added state. As such, there is no reason for them
-to have checks applied. Should they be excluded from these rules? (Yes.)
+to have rules applied. Should they be excluded from these rules? (Yes.)
 
 2 - The elaboration of generic units (as opposed to instances) does exactly nothing.
 The rules 10.2.1(15.1/2-15.5/2) therefore do not apply inside of a pure generic unit.
@@ -80,7 +81,9 @@
 2 - Add after 10.2.1(15.5/2):
 
 A generic body is pure only if elaboration of a corresponding instance body
-would not perform any such actions.
+would not perform any such actions presuming any composite formal types have
+non-visible components whose default initialization evaluates an allocator
+of an access-to-variable type.
 
 3 - Change 10.2.1(15.1/2) to:
 
@@ -91,7 +94,7 @@
 A pragma Pure is used to declare that a library unit is pure. {The declaration and
 body of a declared pure library unit, and all subunits that are elaborated as part
 of elaborating the library unit, shall be pure. In addition, all} [If a pragma
-Pure applies to a library unit, then its[ compilation units {of a declared pure
+Pure applies to a library unit, then its] compilation units {of a declared pure
 library unit} [shall be pure, and they] shall depend semantically only on
 compilation units of other library units that are declared pure. {In addition
 to the places where Legality Rules normally apply (see 12.3), this rule also
@@ -128,7 +131,7 @@
 would effectively ban subunits of pure units, which seems unnecessarily restrictive.
 
 It can be argued that the pure rules are intentionally designed to ignore subunits (that
-is, 10.2.1(17/2) should except subunits). However, then a package subunit of a pure
+is, 10.2.1(17/2) should exempt subunits). However, then a package subunit of a pure
 package would not be required to be pure or even preelaborated, which would open up
 all sorts of holes.
 
@@ -138,10 +141,70 @@
 4 - The rules for Preelaborate and Pure are supposed to be parallel to each other,
 and this is an unnecessary difference. We need to make this change after fixing (2);
 this is not a real problem until (2) is fixed, as no subunits would be required
-to be pure.
+to be pure by the original wording.
 
 
---!corrigendum A.18.2(239/2)
+!corrigendum 10.2.1(15.1/2)
+
+@drepl
+A @i<pure> @fa<library_item> is a preelaborable @fa<library_item> whose
+elaboration does not perform any of the following actions:
+@dby
+A @i<pure> compilation unit is a preelaborable compilation unit whose
+elaboration does not perform any of the following actions:
+
+!corrigendum 10.2.1(15.4/2)
+
+@drepl
+@xbullet<the elaboration of the declaration of a named
+access-to-variable type unless the Storage_Size of the type
+has been specified by a static expression with value zero or
+is defined by the language to be zero;>
+@dby
+@xbullet<the elaboration of the declaration of a non-derived named
+access-to-variable type unless the Storage_Size of the type
+has been specified by a static expression with value zero or
+is defined by the language to be zero;>
+
+!corrigendum 10.2.1(15.5/2)
+
+@drepl
+@xbullet<the elaboration of the declaration of a named
+access-to-constant type for which the Storage_Size has been specified by an
+expression other than a static expression with value zero.>
+@dby
+@xbullet<the elaboration of the declaration of a non-derived named
+access-to-constant type for which the Storage_Size has been specified by an
+expression other than a static expression with value zero.>
+
+A generic body is pure only if elaboration of a corresponding instance body
+would not perform any such actions presuming any composite formal types have
+non-visible components whose default initialization evaluates an @fa<allocator>
+of an access-to-variable type.
+
+!corrigendum 10.2.1(17.2)
+
+@drepl
+A @fa<pragma> Pure is used to declare that a library unit is pure.
+If a @fa<pragma> Pure applies to a library unit,
+then its compilation units shall be pure,
+and they shall depend semantically only on
+compilation units of other library units that are
+declared pure. Furthermore, the full view of any
+partial view declared in the visible part of the library unit that has
+any available stream attributes shall support external streaming
+(see 13.13.2).
+@dby
+A @fa<pragma> Pure is used to declare that a library unit is pure. The declaration and
+body of a declared pure library unit, and all subunits that are elaborated as part
+of elaborating the library unit, shall be pure. In addition, all
+compilation units of a declared pure
+library unit shall depend semantically only on
+compilation units of other library units that are declared pure. In addition
+to the places where Legality Rules normally apply (see 12.3), this rule also
+applies in the private part of an instance of a generic unit. Furthermore,
+the full view of any partial view declared in the visible part of the library
+unit that has any available stream attributes shall support external streaming (see 13.13.2). 
 
 
 !ACATS test

Questions? Ask the ACAA Technical Agent