From: Ed Schonberg Date: Tue, 20 Oct 2020 13:42:57 +0000 (-0400) Subject: [Ada] Spurious error on formal package with overloaded subprograms X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3268fb4dace884ad985965cbd64f3804b2f8fd74;p=gcc.git [Ada] Spurious error on formal package with overloaded subprograms gcc/ada/ * sem_ch12.adb (Instantiate_Formal_Package): If previous matched entity is overloadable, advance in the list of actuals of the actual package, to prevent an erroneous match of two adjacent overloadable homonyms with the same entity. --- diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index dfb0765e2b5..20a00d7be9e 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -10801,6 +10801,16 @@ package body Sem_Ch12 is Next_Non_Pragma (Formal_Node); Next (Actual_Of_Formal); + -- A formal subprogram may be overloaded, so advance in + -- the list of actuals to make sure we do not match two + -- successive formals to the same actual. This is only + -- relevant for overloadable entities, others have + -- distinct names. + + if Is_Overloadable (Actual_Ent) then + Next_Entity (Actual_Ent); + end if; + else -- No further formals to match, but the generic part may -- contain inherited operation that are not hidden in the