From: Hristian Kirtchev Date: Thu, 13 Dec 2007 10:32:34 +0000 (+0100) Subject: sem_type.adb (Function_Interp_Has_Abstract_Op): Add guard to check whether formal... X-Git-Tag: releases/gcc-4.3.0~1038 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8a4444e804f8c9a55a12ae2b98e6394a6a4d8ba1;p=thirdparty%2Fgcc.git sem_type.adb (Function_Interp_Has_Abstract_Op): Add guard to check whether formal E is an entity which may have parameters. 2007-12-06 Hristian Kirtchev * sem_type.adb (Function_Interp_Has_Abstract_Op): Add guard to check whether formal E is an entity which may have parameters. From-SVN: r130858 --- diff --git a/gcc/ada/sem_type.adb b/gcc/ada/sem_type.adb index 4612ad365178..c5ae359e7fe4 100644 --- a/gcc/ada/sem_type.adb +++ b/gcc/ada/sem_type.adb @@ -424,11 +424,11 @@ package body Sem_Type is and then Present (Abstract_Interface_Alias (E)) then -- Ada 2005 (AI-251): If this primitive operation corresponds with - -- an inmediate ancestor interface there is no need to add it to the - -- list of interpretations; the corresponding aliased primitive is + -- an immediate ancestor interface there is no need to add it to the + -- list of interpretations. The corresponding aliased primitive is -- also in this list of primitive operations and will be used instead - -- because otherwise we have a dummy between the two subprograms that - -- are in fact the same. + -- because otherwise we have a dummy ambiguity between the two + -- subprograms which are in fact the same. if not Is_Ancestor (Find_Dispatching_Type (Abstract_Interface_Alias (E)), @@ -505,8 +505,8 @@ package body Sem_Type is end; else - -- Overloaded prefix in indexed or selected component, - -- or call whose name is an expression or another call. + -- Overloaded prefix in indexed or selected component, or call + -- whose name is an expression or another call. Add_Entry (Etype (N), Etype (N)); end if; @@ -530,6 +530,7 @@ package body Sem_Type is Write_Entity_Info (All_Interp.Table (J). Nam, " "); else Write_Str ("No Interp"); + Write_Eol; end if; Write_Str ("================="); @@ -641,7 +642,7 @@ package body Sem_Type is Add_One_Interp (N, H, Etype (H)); if Debug_Flag_E then - Write_Str ("Add overloaded Interpretation "); + Write_Str ("Add overloaded interpretation "); Write_Int (Int (H)); Write_Eol; end if; @@ -1981,7 +1982,10 @@ package body Sem_Type is Form_Parm : Node_Id; begin - if Is_Overloaded (N) then + -- Why is check on E needed below ??? + -- In any case this para needs comments ??? + + if Is_Overloaded (N) and then Is_Overloadable (E) then Act_Parm := First_Actual (N); Form_Parm := First_Formal (E); while Present (Act_Parm)