From: Javier Miranda Date: Thu, 6 Jun 2024 12:06:53 +0000 (+0000) Subject: ada: Reject ambiguous function calls in interpolated string expressions X-Git-Tag: basepoints/gcc-16~8028 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3cc00ccf4b8a866e2265445aa560a2ca00f613b8;p=thirdparty%2Fgcc.git ada: Reject ambiguous function calls in interpolated string expressions When the interpolated expression is a call to an ambiguous call the frontend does not reject it; erroneously accepts the call and generates code that calls to one of them. gcc/ada/ * sem_ch2.adb (Analyze_Interpolated_String_Literal): Reject ambiguous function calls. --- diff --git a/gcc/ada/sem_ch2.adb b/gcc/ada/sem_ch2.adb index aae9990eb4d..08cc75c9104 100644 --- a/gcc/ada/sem_ch2.adb +++ b/gcc/ada/sem_ch2.adb @@ -25,7 +25,9 @@ with Atree; use Atree; with Einfo; use Einfo; +with Einfo.Entities; use Einfo.Entities; with Einfo.Utils; use Einfo.Utils; +with Errout; use Errout; with Ghost; use Ghost; with Mutably_Tagged; use Mutably_Tagged; with Namet; use Namet; @@ -141,6 +143,14 @@ package body Sem_Ch2 is Str_Elem := First (Expressions (N)); while Present (Str_Elem) loop Analyze (Str_Elem); + + if Nkind (Str_Elem) = N_Identifier + and then Ekind (Entity (Str_Elem)) = E_Function + and then Is_Overloaded (Str_Elem) + then + Error_Msg_NE ("ambiguous call to&", Str_Elem, Entity (Str_Elem)); + end if; + Next (Str_Elem); end loop; end Analyze_Interpolated_String_Literal;