CVS difference for ai05s/ai05-0247-1.txt

Differences between 1.9 and version 1.10
Log of other versions for file ai05s/ai05-0247-1.txt

--- ai05s/ai05-0247-1.txt	2011/05/12 22:57:30	1.9
+++ ai05s/ai05-0247-1.txt	2011/05/12 23:03:01	1.10
@@ -1,6 +1,4 @@
-!standard 3.4(27/2)                                 11-05-12  AI05-0247-1/09
-!standard 3.9.2(20.2/2)
-!standard 6.1.1(0)
+!standard 6.1.1(0)                                    11-05-12  AI05-0247-1/09
 !standard 7.3.2(0)
 !reference AI05-0145-2
 !class Amendment 11-03-21
@@ -236,70 +234,6 @@
 We need a similar rule to the last for Type_Invariant'Class.
 
 !wording
-
-*** Begin to delete...
-
-Modify 3.4(27) as follows:
-
-For [the execution of] a call on an inherited subprogram, {the execution of the
-inherited subprogram is equivalent to the execution of a subprogram_body that
-simply calls} [a call on] the corresponding primitive subprogram of the parent
-or progenitor type {with its formal parameters as the actual parameters and, if
-it is a function, returns the value of the call} [is performed;]{. If there is
-more than one inherited homograph (see 8.3), the call is to the inherited
-subprogram that is neither abstract nor a null procedure, if any; otherwise, the
-call has no effect [Redundant: (as it is to a null procedure)]. The}[the] normal
-conversion of each actual parameter to the subtype of the corresponding formal
-parameter (see 6.4.1) performs any necessary type conversion as well. If the
-result type of the inherited subprogram is the derived type, the result of
-calling the subprogram of the parent or progenitor is converted to the derived
-type, or in the case of a null extension, extended to the derived type using the
-equivalent of an extension_aggregate with the original result as the
-ancestor_part and null record as the record_component_association_list.
-
-AARM Ramification: We define calls on inherited subprograms in terms of an
-implicit body that calls the inherited subprogram. This has two effects:
-* The postconditions (see 6.1.1) and type invariants (see 7.3.2) that
-  are evaluated are those that apply to this implicit body; they may include
-  additional expressions from those that apply to the inherited routine if
-  there are multiple ancestors with such routines.
-* When multiple subprograms are inherited, this defines which one is actually
-  called.
-Note that both cases involve inheritance from more than one ancestor. If there
-is only a single parent type, this definition is the same as directly calling
-the inherited routine.
-
-Note that if the inherited subprogram is a null procedure, the call from the
-implicit subprogram_body has no effect, including the evaluation of
-preconditions or postconditions. We don't specify a particular null procedure
-being called, so we don't know which ones to check anyway. In contrast,
-preconditions and postconditions are checked for calls to other subprograms.
-Note that other rules ensure that class-wide preconditions do not need to be
-checked on such calls, as they are always the same or weaker that the
-class-wide precondition for the call on the inherited subprogram. But specific
-preconditions and postconditions need to be checked; where this is done depends
-on the implementation model for these checks (it might or might not need extra
-code).
-End AARM Ramification.
-
-Replace 3.9.2(20.3/3) [as replaced by AI05-0126-1 and AI05-0197-1]:
-
-* otherwise, the action is as defined in 3.4 for a call on an
-  inherited subprogram.
-
-Replace the additional AARM note (added by AI05-0197-1) with:
-
-  For the last bullet, if there are multiple corresponding operations for the
-  parent and progenitors, there has to be at least one that is not abstract
-  (if the inherited operations are all abstract, there would have to
-  be an explicit overriding of the operation, and then the first bullet would
-  apply.) In that case, 3.4 defines that the non-null, non-abstract one is
-  called (there can only be one of these); otherwise, an arbitrary null routine
-  is called. (If the inherited operations are all abstract, there would have to
-  be an explicit overriding of the operation, and then the first bullet would
-  apply.)
-
-**** End to delete....
 
 Replace 13.3.2 [from AI05-0145-2] with the following:
 

Questions? Ask the ACAA Technical Agent