[gcc r11-5401] [Ada] Spurious error on formal package with overloaded subprograms

Pierre-Marie de Rodat pmderodat@gcc.gnu.org
Thu Nov 26 08:41:04 GMT 2020


https://gcc.gnu.org/g:3268fb4dace884ad985965cbd64f3804b2f8fd74

commit r11-5401-g3268fb4dace884ad985965cbd64f3804b2f8fd74
Author: Ed Schonberg <schonberg@adacore.com>
Date:   Tue Oct 20 09:42:57 2020 -0400

    [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:
---
 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


More information about the Gcc-cvs mailing list