CVS difference for arm/source/12.mss

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

--- arm/source/12.mss	2004/12/13 05:56:26	1.27
+++ arm/source/12.mss	2004/12/15 01:09:49	1.28
@@ -1,10 +1,10 @@
 @Part(12, Root="ada.mss")
-@Comment{$Date: 2004/12/13 05:56:26 $}
+@Comment{$Date: 2004/12/15 01:09:49 $}
 @LabeledSection{Generic Units}
 @Comment{$Source: e:\\cvsroot/ARM/Source/12.mss,v $}
-@Comment{$Revision: 1.27 $}
+@Comment{$Revision: 1.28 $}
 @Defn{generic unit}
@@ -1928,7 +1928,8 @@
 @RefSecNum{Assignment Statements}). In the case where the tag would be
 statically determined to be that of the actual type, the call raises
 Program_Error. If such a function is renamed, any call on the
-renaming raises Program_Error.]}
+renaming raises Program_Error.
+@Defn2{Term=[Program_Error],Sec=(raised by failure of run-time check)}]}
@@ -2038,7 +2039,7 @@
   operations that are inherited when the ancestor of a formal type is itself
   a formal type to avoid anomalies.]}
-  @ChgRef{Version=[2],Kind=[Added],ARef=[AI95-00158-01]}
+  @ChgRef{Version=[2],Kind=[AddedNormal],ARef=[AI95-00158-01]}
   @ChgAdded{Version=[2],Text=[Added a semantic description of the meaning
   of operations of an actual class-wide type, as such a type does not have
   primitive operations of its own.]}
@@ -2388,9 +2389,23 @@
 @ChgAdded{Version=[2],Text=[A @nt{subprogram_default} of @key{null} shall not
-be specified for a formal function.]}
+be specified for a formal function or for a
+@ChgAdded{Version=[2],Text=[There are no null functions because the return
+value has to be constructed somehow. We don't allow null for abstract formal
+procedures, as the operation is dispatching. It doesn't seem appropriate (or
+useful) to say that the implementation of something is null in the formal
+type and all possible descendants of that type. This also would define a
+dispatching operation that doesn't correspond to a slot in the tag of the
+controlling type, which would be a new concept. Finally, additional rules
+would be needed to define the meaning of a dispatching null procedure (for
+instance, the convention of such a subprogram should be intrinsic, but that's
+not what the language says.) It doesn't seem worth the effort.]}
@@ -2482,16 +2497,16 @@
   as only specific types have primitive operations (and a formal subprogram
   eventually has to have an actual that is a primitive of some type). This could
   happen in a case like:]}
-  @begin{Example}
-  @key{type} T(<>) @key{is tagged private};
-  @key{with procedure} Foo (Obj : @key{in} T) @key{is abstract};
+   @key{type} T(<>) @key{is tagged private};
+   @key{with procedure} Foo (Obj : @key{in} T) @key{is abstract};
 @key{package} P ...]}
 @ChgAdded{Version=[2],Text=[@key{package} New_P @key{is new} P (Something'Class, Some_Proc);]}
-  @end{Example}
   @ChgAdded{Version=[2],Text=[The instantiation here is always illegal,

Questions? Ask the ACAA Technical Agent