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

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

--- ai05s/ai05-0243-1.txt	2011/02/15 07:14:33	1.2
+++ ai05s/ai05-0243-1.txt	2011/02/16 01:15:32	1.3
@@ -1,4 +1,4 @@
-!standard 10.2.1(11/3)                              11-02-11    AI05-0243-1/01
+!standard 10.2.1(11/3)                              11-02-15    AI05-0243-1/02
 !standard 10.2.1(17/3)
 !class binding interpretation 11-02-11
 !status work item  11-02-11
@@ -18,10 +18,10 @@
 
 The wording proposed by AI05-0034-1 and AI05-0035-1 starts:
 
-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, the limited view of a
-library package is declared pure. ...
+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, the limited
+view of a library package is declared pure. ...
 
 Clearly the second sentence would apply to the body of the limited-viewed
 library unit. But this would obliterate most of the usefulness of limited views
@@ -47,7 +47,7 @@
 declared pure. The declaration and body of a library unit with the Pure aspect
 set to True, and all subunits that are elaborated as part of elaborating the
 library unit, shall be pure. The declaration and body of a library unit with the
-Pure aspect set True, and all subunits of the library unit, shall depend
+Pure aspect set to True, and all subunits of the 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),
 these rules also apply in the private part of an instance of a generic unit.
@@ -71,9 +71,9 @@
 
 A pragma Preelaborate sets the Preelaborate representation aspect of the library
 unit to which it applies to the value True; the aspect can also be set by the
-aspect_specification of the library_item. If the Preelaborate aspect is set to
-True (or the Pure aspect @emdash see below) for a
-library unit, then it is *preelaborated*. The declaration and body of a
+aspect_specification of the library_item. If the Preelaborate aspect
+(or the Pure aspect @emdash see below) is set to True for a library unit, then
+the library unit is *preelaborated*. The declaration and body of a
 preelaborated library unit, and all subunits that are elaborated as part
 of elaborating the library unit, shall be preelaborable. In addition, the
 limited view of a library package is preelaborated. All
@@ -142,7 +142,7 @@
 library package is called a remote types library unit if the Remote_Types aspect of
 the unit has the value True. A library unit package or generic library package is called
 a remote call interface if the Remote_Call_Interface aspect has the value True.
-A normal library unit is one for which no categorization aspect has the value True. 
+A normal library unit is one for which no categorization aspect has the value True.
 
 Replace E.2.1(4):
 
@@ -240,8 +240,8 @@
 A @fa<pragma> Preelaborate sets the Preelaborate representation aspect of the
 library unit to which it applies to the value True; the aspect can also be set
 by the @fa<aspect_specification> of the @fa<library_item>. If the Preelaborate
-aspect is set to True (or the Pure aspect @emdash see below) for a library unit,
-then it is @i<preelaborated>. The declaration and body of a preelaborated
+aspect (or the Pure aspect @emdash see below) is set to True for a library unit,
+then the library unit is @i<preelaborated>. The declaration and body of a preelaborated
 library unit, and all subunits that are elaborated as part of elaborating the
 library unit, shall be preelaborable. In addition, the limited view of a library
 package is preelaborated. All compilation units of a preelaborated library unit
@@ -273,7 +273,7 @@
 the limited view of a library package is declared pure. The declaration and body
 of a library unit with the Pure aspect set to True, and all subunits that are
 elaborated as part of elaborating the library unit, shall be pure. The
-declaration and body of a library unit with the Pure aspect set True, and all
+declaration and body of a library unit with the Pure aspect set to True, and all
 subunits of the 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), these rules also apply in the
@@ -1048,6 +1048,85 @@
 I checked everything indexed and in related places). Anyway, be gentle...
 
 [Version /01 of the AI follows - Editor.]
+
+****************************************************************
+
+From: Erhard Ploedereder
+Date: Tuesday, February 15, 2011  6:17 PM
+
+I think that Randy's rewording works. I have small editorials; markups are relative to Randy's wording.
+
+Replace 10.2.1(17/3) [as modified by AI05-0034-1 and AI05-0035-1]:
+
+A pragma Pure sets the Pure operational aspect of the library unit to which it applies to the value True; the aspect can also be set by the aspect_specification of the library_item. Setting the Pure aspect on a library unit to True specifies that the unit
 is *declared pure*. In addition, the limited view of a library package is declared pure. The declaration and body of a library unit with the Pure aspect set to True, and all subunits that are elaborated as part of elaborating the library unit, shall be {d
eclared} pure. The declaration and body of a library unit with the Pure aspect set {to} True, and all subunits of the 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), these rules also apply 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 a declared pure lib
+ry unit that has any available stream attributes shall support external streaming (see 13.13.2).
+
+AARM Ramification: A limited view never contains any partial views, only incomplete views, so the last sentence never applies to a limited view.
+
+Replace 10.2.1(11/3) [as modified by AI05-0034-1]:
+
+A pragma Preelaborate sets the Preelaborate operational aspect of the library unit to which it applies to the value True; the aspect can also be set by the aspect_specification of the library_item. If the Preelaborate aspect [is set to True] (or the Pure 
aspect @emdash see below) for a library unit {is set to True}, then [it]{the library unit} is *preelaborated*. The declaration and body of a preelaborated library unit, and all subunits that are elaborated as part of elaborating the library unit, shall be 
preelaborable. In addition, the limited view of a library package is preelaborated. All compilation units of a preelaborated library unit shall depend semantically only on compilation units of other preelaborated or declared pure library units.  In additio
n to the places where Legality Rules normally apply (see 12.3), these rules also apply in the private part of an instance of a generic unit. If a library unit is preelaborated, then its declaration, if any, and body, if any,
+e elaborated prior to all non-preelaborated library_items of the partition.
+
+****************************************************************
+
+From: Erhard Ploedereder
+Date: Tuesday, February 15, 2011  6:23 PM
+
+PS. There are couple of places in the RM where
+
+"pure" -> "declared pure"
+
+should be applied. Using the 05 Manual, the places are
+A.3(1/2)
+E.2.2 (18)
+
+****************************************************************
+
+From: Randy Brukardt
+Date: Tuesday, February 15, 2011  7:12 PM
+
+> I think that Randy's rewording works. I have small editorials; markups
+> are relative to Randy's wording.
+
+Good to hear.
+
+> Replace 10.2.1(17/3) [as modified by AI05-0034-1 and AI05-0035-1]:
+...
+> and all subunits that are elaborated as part of elaborating the
+> library unit, shall be {declared} pure. The declaration and body of a
+> library unit with the Pure aspect set
+...
+
+This change is wrong, although it surely is confusing. The difference between a
+library unit that is "pure" and one that is "declared pure" is similar to the
+difference between a unit that is "preelaborable" and one that is
+"preelaborated".
+
+That is, in the first case, it is a unit that meets the restrictions of pure (or
+preelaboration), and in the second case, it is a unit that is explicitly
+declared pure (or considered to have such a declaration in the limited view
+case). "Pure" is defined by 10.2.1(15.1/2); "declared pure" by this paragraph.
+
+It clearly would be better if the terms were more different, but of course
+"purable" isn't a word. :-)
+
+I'm not sure that this distinction is really necessary (it seems to me that
+specifications [only] can be declared pure, and I don't think they can get to be
+pure any other way), but I don't want to drop it at this late date without
+taking the time to think through the implications carefully. The night after a
+meeting material deadline isn't the timee for that. We can discuss it in St.
+Pete Beach.
+
+[Editor's note: The other changes were made to version /02.]
+
+>PS. There are couple of places in the RM where "pure" -> "declared
+>pure"
+>A.3(1/2)
+>E.2.2 (18)
+
+I think these are OK as they are, because in the first case either term fits
+fine, and in the second case, it really means "pure" and not "declared pure".
 
 ****************************************************************
 

Questions? Ask the ACAA Technical Agent