CVS difference for arm/source/ds.mss

Differences between 1.49 and version 1.50
Log of other versions for file arm/source/ds.mss

--- arm/source/ds.mss	2008/02/28 07:51:02	1.49
+++ arm/source/ds.mss	2008/11/26 23:41:02	1.50
@@ -1,7 +1,7 @@
 @comment{ $Source: e:\\cvsroot/ARM/Source/ds.mss,v $ }
-@comment{ $Revision: 1.49 $ $Date: 2008/02/28 07:51:02 $ $Author: randy $ }
+@comment{ $Revision: 1.50 $ $Date: 2008/11/26 23:41:02 $ $Author: randy $ }
 @Part(dist, Root="ada.mss")
-@Comment{$Date: 2008/02/28 07:51:02 $}
+@Comment{$Date: 2008/11/26 23:41:02 $}
 
 @LabeledNormativeAnnex{Distributed Systems}
 
@@ -619,16 +619,19 @@
 @begin{Itemize}
 @ChgRef{Version=[1],Kind=[Revised],Ref=[8652/0083],ARef=[AI95-00047-01]}
 @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00240-01],ARef=[AI95-00366-01]}
-@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0060-1]}
+@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0060-1],ARef=[AI05-0121-1]}
 The primitive subprograms of the corresponding specific
 @Chg{Version=[3],New=[],Old=[limited private ]}type
-shall only have access parameters if they are controlling formal parameters;
-@Chg{New=[each non-controlling formal parameter],Old=[the types of all the
-non-controlling formal parameters]} shall @Chg{Version=[2],New=[support
-external streaming (see @RefSecNum{Stream-Oriented Attributes});],
-Old=[have @Chg{New=[either a nonlimited
-type or a type with],Old=[]} Read and Write attributes@Chg{New=[ specified
-via an @nt{attribute_definition_clause};],Old=[.]}]}
+shall only have access parameters if they are controlling formal
+parameters@Chg{Version=[3],New=[. The primitive functions of the corresponding
+specific type shall only have an access result if it is a controlling access
+result.],Old=[;]} @Chg{New=[@Chg{Version=[3],New=[Each],Old=[each]}
+non-controlling formal parameter],Old=[the types of all the non-controlling
+formal parameters]} @Chg{Version=[3],New=[and non-controlling result
+type ],Old=[]}shall @Chg{Version=[2],New=[support external streaming (see
+@RefSecNum{Stream-Oriented Attributes});], Old=[have @Chg{New=[either a
+nonlimited type or a type with],Old=[]} Read and Write attributes@Chg{New=[
+specified via an @nt{attribute_definition_clause};],Old=[.]}]}
 
 @ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0060-1]}
 @ChgAdded{Version=[3],Text=[The corresponding specific type shall not have
@@ -644,6 +647,13 @@
 only as part of a dispatching call where the value designates
 a controlling operand of the call (see @RefSec{Remote Subprogram Calls})@Chg{New=[.],Old=[;]}
 
+@ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0121-1]}
+@ChgAdded{Version=[3],Text=[A controlling access result value for a primitive
+function with any controlling operands of the corresponding specific type shall
+either be explicitly converted to a remote access-to-class-wide type or be part
+of a dispatching call where the value designates a controlling operand of the
+call.]}
+
 @ChgRef{Version=[1],Kind=[Revised]}
 @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00366-01]}
 The Storage_Pool @Chg{Version=[2],New=[attribute is],Old=[and
@@ -706,6 +716,17 @@
   visible part. These changes were made so that the rules were consistent with
   the rules introduced for the Corrigendum for stream attributes; moreover,
   legality should not depend on the contents of the private part.]}
+
+  @ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0121-1]}
+  @ChgAdded{Version=[3],Text=[@b<Amendment 2:> Added rules for
+  returning of remote access-to-classwide types; this had been missed
+  in the past. While programs that returned unstreamable types from
+  RCI functions were legal, it is not clear what they could have done
+  (as the results could not be marshalled). Similarly, RCI functions
+  that return remote controlling access types could try to save those
+  values, but it is unlikely that a compiler would know how to to that
+  usefully. Thus, it seems unlikely that
+  any real programs will be impacted by these changes.]}
 @end{Incompatible95}
 
 @begin{Extend95}
@@ -717,6 +738,13 @@
   need stream attributes defined (otherwise there would be a signficant
   incompatibility, as Limited_Controlled would need stream attributes, and then
   all extensions of it also would need stream attributes).]}
+
+  @ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0060-1]}
+  @ChgAdded{Version=[3],Text=[@b<Amendment 2:> Clarified that anonymous
+  access types are never remote access types (and can be used in
+  remote types units subject to the normal restrictions). Added wording
+  to allow limited class-wide interfaces to be designated by remote
+  access types.]}
 @end{Extend95}
 
 @begin{DiffWord95}
@@ -748,13 +776,6 @@
   @ChgAdded{Version=[2],Text=[Corrected the wording so that a value of a local
   access-to-subprogram type cannot be converted to a remote
   access-to-subprogram type, as intended (and required by the ACATS).]}
-
-  @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0060-1]}
-  @ChgAdded{Version=[3],Text=[@b<Corrigendum 2:> Clarified that anonymous
-  access types are never remote access types (and can be used in
-  remote types units subject to the normal restrictions). Added wording
-  to allow limited class-wide interfaces to be designated by remote
-  access types.]}
 @end{DiffWord95}
 
 
@@ -859,16 +880,26 @@
 
 @ChgRef{Version=[1],Kind=[Revised],Ref=[8652/0078],ARef=[AI95-00048-01]}
 @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00240-01],ARef=[AI95-00366-01]}
+@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0121-1]}
 it shall not @Chg{New=[be, nor shall its visible part],
 Old=[]} contain@Chg{New=[,],Old=[]} a
 subprogram (or access-to-subprogram) declaration
-whose profile has @Chg{Version=[2],New=[@Redundant[an access parameter or]
-a parameter of a type that does not support external streaming
+whose profile has @Chg{Version=[2],New=[@Chg{Version=[3],New=[],
+Old=[@Redundant[an access parameter or]]}
+a parameter @Chg{Version=[3],New=[or result ],Old=[]}of a type that
+does not support external streaming
 (see @RefSecNum{Stream-Oriented Attributes})],
 Old=[an access parameter, or a formal parameter of a
 limited type unless that limited type has user-specified Read and Write
 attributes]};
 
+@begin{Ramification}
+@ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0121-1]}
+@ChgAdded{Version=[3],Text=[No anonymous access types support external
+streaming, so they are never allowed as parameters or results of
+RCI subprograms.]}
+@end{Ramification}
+
 any public child of the library unit shall
 be a remote call interface library unit.
 @begin{Reason}
@@ -980,6 +1011,14 @@
   This change was made so that the rules were consistent with the rules
   introduced for the Corrigendum for stream attributes; moreover, legality
   should not depend on the contents of the private part.]}
+
+  @ChgRef{Version=[3],Kind=[Added],ARef=[AI05-0121-1]}
+  @ChgAdded{Version=[3],Text=[@b<Amendment 2:> Added a rule to
+  ensure that function results are streamable; this was missing in
+  previous versions of Ada. While programs that returned unstreamable
+  types from RCI functions were legal, it is not clear what they could
+  have done (as the results could not be marshalled). Thus, it seems
+  unlikely that any real programs will be impacted by this change.]}
 @end{Incompatible95}
 
 @begin{DiffWord95}
@@ -1135,9 +1174,13 @@
 The latter two ways correspond to a @i(dynamic) binding between
 the calling and the called partition.
 
-A remote call interface library unit
+@ChgRef{Version=[3],Kind=[Revised],ARef=[AI05-0121-1]}
+@Chg{Version=[3],New=[Remote types library units (see
+@RefSecNum{Remote Types Library Units}) and],Old=[A]} remote
+call interface library @Chg{Version=[3],New=[units],Old=[unit]}
 (see @RefSecNum{Remote Call Interface Library Units})
-defines the remote subprograms or remote access types used for
+@Chg{Version=[3],New=[define],Old=[defines]}
+the remote subprograms or remote access types used for
 remote subprogram calls.
 @end{Intro}
 
@@ -1476,6 +1519,10 @@
   @ChgAdded{Version=[2],Text=[@b<Corrigendum:> Clarified that the check on
   class-wide types also applies to values returned from remote subprogram call
   functions.]}
+
+  @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0121-1]}
+  @ChgAdded{Version=[3],Text=[@b<Amendment 2:> Corrected the text to
+  note that remote access types can be defined in remote types units.]}
 @end{DiffWord95}
 
 

Questions? Ask the ACAA Technical Agent