From: Javier Miranda <mira...@adacore.com> 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. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_ch2.adb | 10 ++++++++++ 1 file changed, 10 insertions(+) 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; -- 2.45.1