From 3268fb4dace884ad985965cbd64f3804b2f8fd74 Mon Sep 17 00:00:00 2001 From: Ed Schonberg Date: Tue, 20 Oct 2020 09:42:57 -0400 Subject: [PATCH] [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. --- gcc/ada/sem_ch12.adb | 10 ++++++++++ 1 file changed, 10 insertions(+) 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 -- 2.30.2