From: Ed Schonberg Date: Wed, 18 Nov 2015 13:55:42 +0000 (+0000) Subject: sem_ch4.adb (Try_Container_Indexing): When constructing the parameter list for the... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=43151cfd6a3cbdfb2c452b5642c86581d06c125f;p=gcc.git sem_ch4.adb (Try_Container_Indexing): When constructing the parameter list for the potentially overloaded calls to... 2015-11-18 Ed Schonberg * sem_ch4.adb (Try_Container_Indexing): When constructing the parameter list for the potentially overloaded calls to indexing functions, do not propagate overloadings if the actual is a named association: overloadings appear directly on the expression in the association. 2015-11-18 Ed Schonberg * sem_type.adb (Interface_Present_In_Ancestor): If the type is incomplete, the list of ancestors is found either on the full view or the non-limited view of the type. From-SVN: r230547 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index bd90c5c25b4..2b9eed4cbe9 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,17 @@ +2015-11-18 Ed Schonberg + + * sem_ch4.adb (Try_Container_Indexing): When constructing the + parameter list for the potentially overloaded calls to indexing + functions, do not propagate overloadings if the actual is a named + association: overloadings appear directly on the expression in + the association. + +2015-11-18 Ed Schonberg + + * sem_type.adb (Interface_Present_In_Ancestor): If the type is + incomplete, the list of ancestors is found either on the full + view or the non-limited view of the type. + 2015-11-18 Nicolas Roche * sysdep.c (__gnat_localtime_tzoff): On Windows platform diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index 9ac6f8fc5ac..94ecc23582e 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -7437,7 +7437,14 @@ package body Sem_Ch4 is Arg := First (Exprs); while Present (Arg) loop New_Arg := Relocate_Node (Arg); - Save_Interps (Arg, New_Arg); + + -- The arguments can be parameter associations, in which case the + -- explicit actual parameter carries the overloadings. + + if Nkind (New_Arg) /= N_Parameter_Association then + Save_Interps (Arg, New_Arg); + end if; + Append (New_Arg, Assoc); Next (Arg); end loop; diff --git a/gcc/ada/sem_type.adb b/gcc/ada/sem_type.adb index d5be94ec90e..f5826c488d9 100644 --- a/gcc/ada/sem_type.adb +++ b/gcc/ada/sem_type.adb @@ -2619,8 +2619,16 @@ package body Sem_Type is end if; if Ekind (Target_Typ) = E_Incomplete_Type then - pragma Assert (Present (Non_Limited_View (Target_Typ))); - Target_Typ := Non_Limited_View (Target_Typ); + + -- We must have either a full view or a non-limited view of the type + -- to locate the list of ancestors. + + if Present (Full_View (Target_Typ)) then + Target_Typ := Full_View (Target_Typ); + else + pragma Assert (Present (Non_Limited_View (Target_Typ))); + Target_Typ := Non_Limited_View (Target_Typ); + end if; -- Protect the frontend against previously detected errors