CVS difference for arm/source/12.mss

Differences between 1.89 and version 1.90
Log of other versions for file arm/source/12.mss

--- arm/source/12.mss	2012/02/19 01:58:36	1.89
+++ arm/source/12.mss	2012/03/20 06:13:58	1.90
@@ -1,10 +1,10 @@
 @Part(12, Root="ada.mss")
 
-@Comment{$Date: 2012/02/19 01:58:36 $}
+@Comment{$Date: 2012/03/20 06:13:58 $}
 @LabeledSection{Generic Units}
 
 @Comment{$Source: e:\\cvsroot/ARM/Source/12.mss,v $}
-@Comment{$Revision: 1.89 $}
+@Comment{$Revision: 1.90 $}
 
 @begin{Intro}
 @Defn{generic unit}
@@ -1047,7 +1047,7 @@
 that denotes the other one.@PDefn2{Term=[arbitrary order],Sec=[allowed]}
 Finally, the instance declaration and body are elaborated.
 @begin{Ramification}
-Note that if the evaluation of a default depends on some side-effect
+Note that if the evaluation of a default depends on some side effect
 of some other evaluation,
 the order is still arbitrary.
 @end{Ramification}
@@ -2827,6 +2827,20 @@
   (it avoids confusion, since not all interesting properties form a class).]}
 @end{DiffWord95}
 
+@begin{Incompatible2005}
+  @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0288-1]}
+  @ChgAdded{Version=[3],Text=[@Defn{incompatibilities with Ada 2005}
+  @b<Correction:> Matching of formal access-to-subprogram types now uses
+  subtype conformance rather than mode conformance, which is needed to
+  plug a hole. This could cause some instantiations legal in Ada 95 and
+  Ada 2005 to be rejected in Ada 2012. We believe that formal
+  access-to-subprogram types occur rarely, and actuals that are not
+  subtype conformant are rarer still, so this should not happen often.
+  (In addition, one popular compiler has a bug that causes such instances
+  to be rejected, so no code compiled with that compiler could have an
+  incompatibility.)]}
+@end{Incompatible2005}
+
 
 @LabeledAddedSubClause{Version=[2],Name=[Formal Interface Types]}
 
@@ -3042,6 +3056,7 @@
 
 
 @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00260-02]}
+@ChgRef{Version=[3],Kind=[RevisedAdded],ARef=[AI05-0296-1]}
 @ChgAdded{Version=[2],Text=[If a formal parameter of a
 @nt{formal_@!abstract_@!subprogram_@!declaration} is of a
 specific tagged type @i<T> or of an anonymous access type designating a
@@ -3052,7 +3067,8 @@
 specific tagged type @i<T>, @i<T> is called a controlling type of
 the @nt{formal_@!abstract_@!subprogram_@!declaration}. A
 @nt{formal_@!abstract_@!subprogram_@!declaration} shall have exactly
-one controlling type.
+one controlling type@Chg{Version=[3],New=[, and that type shall not be
+incomplete],Old=[]}.
 @Defn2{Term=[controlling type],Sec=[of a @nt{formal_abstract_subprogram_declaration}]}]}
 
 @begin{Ramification}
@@ -3364,6 +3380,17 @@
   @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00423-01]}
   @ChgAdded{Version=[2],Text=[Added matching rules for @nt{null_exclusion}s.]}
 @end{Diffword95}
+
+@begin{Incompatible2005}
+  @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0296-1]}
+  @ChgAdded{Version=[3],Text=[@Defn{incompatibilities with Ada 2005}It
+  is now illegal to declare a formal abstract subprogram whose controlling
+  type is incomplete. It was never intended to allow that, and such a type
+  would have to come from outside of the generic unit in Ada 2005, so it is
+  unlikely to be useful. Moreover, a dispatching call on the subprogram
+  is likely to fail in many implementations. So it is very unlikely that any
+  code will need to be changed because of this new rule.]}
+@end{Incompatible2005}
 
 @begin{Extend2005}
   @ChgRef{Version=[3],Kind=[AddedNormal],ARef=[AI05-0071-1],ARef=[AI05-0131-1]}

Questions? Ask the ACAA Technical Agent