CVS difference for ais/ai-00366.txt

Differences between 1.11 and version 1.12
Log of other versions for file ais/ai-00366.txt

--- ais/ai-00366.txt	2004/11/09 02:31:39	1.11
+++ ais/ai-00366.txt	2004/12/09 19:55:36	1.12
@@ -1,13 +1,16 @@
-!standard 10.2.1(16)                                  04-11-05  AI95-00366/06
+!standard 10.2.1(16)                                  04-12-02  AI95-00366/07
 !standard 3.2(6)
+!standard 3.8(9)
 !standard 10.2.1(17)
 !standard 10.2.1(18)
-!standard 13.13.2(1)
+!standard 13.13.2(1/1)
 !standard E.2.2(8)
-!standard E.2.2(14)
-!standard E.2.2(17)
-!standard E.2.3(14.1)
+!standard E.2.2(14/1)
+!standard E.2.2(17/1)
+!standard E.2.3(14/1)
 !class amendment 03-12-14
+!status Amendment 200Y 04-12-02
+!status ARG Approved 10-0-0  04-11-20
 !status work item 03-12-14
 !status received 03-12-14
 !priority Medium
@@ -86,10 +89,9 @@
     A pure library_item is a preelaborable library_item that does not
     contain the declaration of any variable, or named access-to-object
     type for which the Storage_Size has not been specified by a static
-    expression with value 0 and is not immutably defined to be 0,
-    excepting declarations of imported variables and declarations within a
-    subprogram, generic subprogram, generic formal part, task unit, or
-    protected unit.
+    expression with value zero (0) and is not defined to be zero (0),
+    excepting declarations within a subprogram, generic subprogram, generic
+    formal part, task unit, or protected unit.
 
 
 Replace 10.2.1(17)
@@ -198,7 +200,7 @@
     attribute_definition_clause.
 
 
-Change E.2.3(14.1) from
+Change E.2.3(14/1) from
 
     * it shall not be, nor shall its visible part contain, a subprogram
       (or access-to-subprogram) declaration whose profile has an access
@@ -274,13 +276,166 @@
 
 !example
 
---!corrigendum
+!corrigendum 3.2(6)
 
+@drepl
+The term @fa<subcomponent> is used in this International Standard in place of
+the term component to indicate either a component, or a component of another
+subcomponent. Where other subcomponents are excluded, the term component is
+used instead. Similarly, a @fa<part> of an object or value is used to mean the
+whole object or value, or any set of its subcomponents.
+@dby
+The term @fa<subcomponent> is used in this International Standard in place of
+the term component to indicate either a component, or a component of another
+subcomponent. Where other subcomponents are excluded, the term component is
+used instead. Similarly, a @fa<part> of an object or value is used to mean the
+whole object or value, or any set of its subcomponents.
+The terms component, subcomponent and part are also applied to a type
+meaning the component, subcomponent or part of objects and values of the type.
+
+!corrigendum 3.8(9)
+
+@drepl
+Each @fa<component_declaration> declares a @i<component> of the record type.
+Besides components declared by @fa<component_declaration>s, the components of a
+record type include any components declared by @fa<discriminant_specification>s
+of the record type declaration. The identifiers of all components of a record
+type shall be distinct.
+@dby
+Each @fa<component_declaration> declares a component of the record type.
+Besides components declared by @fa<component_declaration>s, the components of a
+record type include any components declared by @fa<discriminant_specification>s
+of the record type declaration. The identifiers of all components of a record
+type shall be distinct.
+
+!corrigendum 10.2.1(16)
+
+@drepl
+A pure @fa<library_item> is a preelaborable @fa<library_item> that does not
+contain the declaration of any variable or named access type, except within a
+subprogram, generic subprogram, task unit, or protected unit.
+@dby
+A pure @fa<library_item> is a preelaborable @fa<library_item> that does not
+contain the declaration of any variable, or named access-to-object
+type for which the Storage_Size has not been specified by a static
+expression with value zero (0) and is not defined to be zero (0),
+excepting declarations within a subprogram, generic subprogram, generic
+formal part, task unit, or protected unit.
+
+!corrigendum 10.2.1(17)
+
+@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.
+@dby
+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
+private type declared in the visible part of the library unit shall support
+external streaming (see 13.13.2).
+
+!corrigendum 10.2.1(18)
+
+@drepl
+If a library unit is declared pure, then the implementation is permitted to
+omit a call on a library-level subprogram of the library unit if the results
+are not needed after the call. Similarly, it may omit such a call and simply
+reuse the results produced by an earlier call on the same subprogram, provided
+that none of the parameters are of a limited type, and the addresses and values
+of all by-reference actual parameters, and the values of all by-copy-in actual
+parameters, are the same as they were at the earlier call. This permission
+applies even if the subprogram produces other side effects when called.
+@dby
+If a library unit is declared pure, then the implementation is permitted to
+omit a call on a library-level subprogram of the library unit if the results
+are not needed after the call. In addition, the implementation may omit a call
+on such a subprogram and simply reuse the results produced by an earlier call
+on the same subprogram, provided that none of the parameters nor any object
+accessible via access values from the parameters are of a limited type, and the
+addresses and values of all by-reference actual parameters, the values of all
+by-copy-in actual parameters, and the values of all objects accessible via
+access values from the parameters, are the same as they were at the earlier
+call. This permission applies even if the subprogram produces other side
+effects when called.
+
+!corrigendum 13.13.2(1/1)
+
+@dinsa
+The operational attributes Write, Read, Output, and Input convert
+values to a stream of elements and reconstruct values from a stream.
+@dinss
+A type is said to @i<support external streaming> if Read and Write attributes
+are available that provide for sending values of such a type between active
+partitions, with Write marshalling the representation, and Read
+unmarshalling the representation.
+
+A limited type supports external streaming only if it has available
+Read and Write attributes. A type with a part that is of an access
+type supports external streaming only if that access type or the type
+of some part that includes the access type component, has available
+Read and Write attributes. An anonymous access type does not support
+external streaming. All other types support external streaming.
+
+!corrigendum E.2.2(8)
+
+@drepl
+@xbullet<if the full view of a type declared in the visible part of the library
+unit has a part that is of a non-remote access type, then that access type, or
+the type of some part that includes the access type subcomponent, shall have
+user-specified Read and Write attributes.>
+@dby
+@xbullet<the full view of each type declared in the visible part of the library
+unit shall support external streaming.>
+
+!corrigendum E.2.2(14/1)
+
+@drepl
+@xbullet<The primitive subprograms of the corresponding specific limited
+private type shall only have access parameters if they are controlling formal
+parameters; each non-controlling formal parameter shall have either a
+nonlimited type or a type with Read and Write attributes specified via an
+@fa<attribute_definition_clause>;>
+@dby
+@xbullet<The primitive subprograms of the corresponding specific
+limited private type shall only have access parameters if they are
+controlling formal parameters; each non-controlling formal parameter
+shall support external streaming;>
+
+!corrigendum E.2.2(17/1)
+
+@drepl
+@xbullet<The Storage_Pool and Storage_Size attributes are not defined for
+remote access-to-class-wide types; the expected type for an allocator shall not
+be a remote access-to-class-wide type; a remote access-to-class-wide type shall
+not be an actual parameter for a generic formal access type.>
+@dby
+@xbullet<The Storage_Pool attribute is not defined for a remote
+access-to-class-wide type; the expected type for an allocator shall not be a
+remote access-to-class-wide type. A remote access-to-class-wide type shall not
+be an actual parameter for a generic formal access type. The Storage_Size
+attribute of a remote access-to-class-wide type yields 0; it is not allowed in
+an @fa<attribute_definition_clause>.>
+
+!corrigendum E.2.3(14/1)
+
+@drepl
+@xbullet<it shall not be, nor shall its visible part contain, a subprogram (or
+access-to-subprogram) declaration whose profile has an access parameter, or a
+formal parameter of a limited type unless that limited type has user-specified
+Read and Write attributes;>
+@dby
+@xbullet<it shall not be, nor shall its visible part contain, a subprogram (or
+access-to-subprogram) declaration whose profile has an access parameter or a
+parameter of a type that does not support external streaming;>
+
 !ACATS test
 
 An ACATS test checking that such types are allowed in Pure units should be
 constructed. An ACATS B-Test checking that a unit with a private access part
-and no streaming operations is reject should be constructed.
+and no streaming operations is rejected should be constructed.
 
 !appendix
 

Questions? Ask the ACAA Technical Agent