sem_disp.adb (Check_Dispatching_Operation): If the operation implements an operation inherited from a progenitor interface...

2007-08-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Dispatching_Operation): If the operation
	implements an operation inherited from a progenitor interface, verify
	that they are subtype-conformant.

From-SVN: r127549
This commit is contained in:
Ed Schonberg 2007-08-16 14:20:50 +02:00 committed by Arnaud Charlet
parent 3b8b727095
commit ace980d5d8

View File

@ -1333,8 +1333,10 @@ package body Sem_Disp is
then
-- Ada 2005 (AI-251): Update the attribute alias of all the aliased
-- entities of the overridden primitive to reference New_Op, and also
-- propagate them the new value of the attribute
-- Is_Abstract_Subprogram.
-- propagate the proper value of Is_Abstract_Subprogram. Verify
-- that the new operation is subtype conformant with the interface
-- operations that it implements (for operations inherited from the
-- parent itself, this check is made when building the derived type).
Elmt := First_Elmt (Primitive_Operations (Tagged_Type));
while Present (Elmt) loop
@ -1351,6 +1353,7 @@ package body Sem_Disp is
and then Alias (Prim) = Prev_Op
then
Set_Alias (Prim, New_Op);
Check_Subtype_Conformant (New_Op, Prim);
Set_Is_Abstract_Subprogram
(Prim, Is_Abstract_Subprogram (New_Op));