CVS difference for arm/source/03c.mss

Differences between 1.128 and version 1.129
Log of other versions for file arm/source/03c.mss

--- arm/source/03c.mss	2012/11/28 23:53:03	1.128
+++ arm/source/03c.mss	2013/02/02 01:46:58	1.129
@@ -1,9 +1,9 @@
 @Part(03, Root="ada.mss")
-@Comment{$Date: 2012/11/28 23:53:03 $}
+@Comment{$Date: 2013/02/02 01:46:58 $}
 @Comment{$Source: e:\\cvsroot/ARM/Source/03c.mss,v $}
-@Comment{$Revision: 1.128 $}
+@Comment{$Revision: 1.129 $}
 @LabeledClause{Tagged Types and Type Extensions}
@@ -491,17 +491,20 @@
 @ChgRef{Version=[3],Kind=[RevisedAdded]}@ChgNote{Paragraph number changed}
 @ChgAdded{Version=[2],Text=[The function Parent_Tag returns the tag of the
 parent type of the type whose tag is T. If the type does not have a parent type
-(that is, it was not declared by a derived_type_declaration), then No_Tag is
+(that is, it was not @Chg{Version=[4],New=[defined],Old=[declared]} by a
+then No_Tag is returned.]}
 @ChgAdded{Version=[2],Text=[The parent type is always the parent of the full
 type; a private extension appears to define a parent type, but it does not
 (only the various forms of derivation do that). As this is a run-time
-operation, ignoring privateness is OK.]}
+operation, ignoring @Chg{Version=[4],New=[privacy],Old=[privateness]} is OK.]}
@@ -1511,11 +1514,13 @@
   @ChgRef{Version=[2],Kind=[Revised],ARef=[AI95-00252-01]}@ChgNote{Add info about prefix calls}
+  @ChgRef{Version=[4],Kind=[Revised],ARef=[AI12-0039-1]}
   This rule applies to all expressions
   or @nt<name>s with a specific expected type, not just those that
   are actual parameters to a dispatching call. This rule does not apply to
-  a membership test whose @nt<expression> is class-wide,
-  since any type that covers the tested type is explicitly allowed.
+  a membership test whose
+  @Chg{Version=[4],New=[@SynI{tested_}@nt{simple_expression}],Old=[@nt<expression>]}
+  is class-wide, since any type that covers the tested type is explicitly allowed.
   See @RefSecNum(Relational Operators and Membership Tests).@Chg{Version=[2],
   New=[ This rule also doesn't apply to a @nt{selected_component} whose
   @nt{selector_name} is a subprogram, since the rules explicitly say that
@@ -3627,7 +3632,9 @@
 @Leading@keepnext@i{Examples of access-to-object types:}
-@key[type] Peripheral_Ref @key<is @Chg{Version=[2],New=[not null ],Old=[]}access> Peripheral;  --@RI[  see @RefSecNum{Variant Parts and Discrete Choices}]
+@Chg{Version=[4],New=[@key[type] Frame @key<is access> Matrix;    --@RI[  see @RefSecNum{Array Types}]
+],Old=[]}@key[type] Peripheral_Ref @key<is @Chg{Version=[2],New=[not null ],Old=[]}access> Peripheral;  --@RI[  see @RefSecNum{Variant Parts and Discrete Choices}]
 @key[type] Binop_Ptr @key[is access all] Binary_Operation'Class;
                                            --@RI[ general access-to-class-wide, see @RefSecNum{Type Extensions}]
@@ -4591,6 +4598,7 @@
 @Chg{Version=[2],New=[The],Old=[For a function whose result type is a
 return-by-reference type,
 the accessibility level of the result object is the same as
@@ -4604,7 +4612,9 @@
 accessibility level of an @nt{aggregate} @Chg{Version=[3],New=[],Old=[or the
 result of a function call ]}is that of the innermost
 master that evaluates the @nt{aggregate}@Chg{Version=[3],New=[],Old=[ or
-function call]}],Old=[execution of the called function]}.
+function call]}],Old=[execution of the called
+function]}.@Chg{Version=[4],New=[ Corresponding rules apply to a value conversion
+(see @RefSecNum{Type Conversions}).],Old=[]}
 @ChgAdded{Version=[3],Type=[Leading],Text=[The accessibility level of the result
@@ -6089,6 +6099,22 @@
   accessibility level of null values when those are passed as the actual of an
   access-to-object parameter.]}
+  @ChgRef{Version=[4],Kind=[AddedNormal],ARef=[AI12-0027-1]}
+  @ChgAdded{Version=[4],Text=[@Defn{incompatibilities with Ada 2012}@b<Correction:>
+  Defined the accessibility of a value conversion, so that it is treated like
+  an @nt{aggregate} built at the point of the conversion. This was
+  previously unspecified, so this change might be
+  incompatible if an Ada implementation treated the accessibility of such
+  conversions as that of the operand type; in that case, previous legal
+  conversions probably will become illegal as the lifetime of the conversion
+  is very short. However, code that could tell this difference is fairly rare
+  (taking 'Access of a component of a result of a type conversion), code
+  depending on this accessibility was not portable, and such code could have
+  created an immediately dangling pointer if the conversion actually made
+  a copy (which is necessary in some instances).]}

Questions? Ask the ACAA Technical Agent