From: Ed Schonberg Date: Thu, 16 Aug 2007 12:20:50 +0000 (+0200) Subject: sem_disp.adb (Check_Dispatching_Operation): If the operation implements an operation... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ace980d5d8b6443b4e0d8d5b9cdcd34083c5e09b;p=gcc.git sem_disp.adb (Check_Dispatching_Operation): If the operation implements an operation inherited from a progenitor interface... 2007-08-16 Ed Schonberg * 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 --- diff --git a/gcc/ada/sem_disp.adb b/gcc/ada/sem_disp.adb index e0f384abcc3..faf97404f9d 100644 --- a/gcc/ada/sem_disp.adb +++ b/gcc/ada/sem_disp.adb @@ -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));