[Ada] More robust guard against cascaded errors with overlapping actuals
authorPiotr Trojanek <trojanek@adacore.com>
Mon, 12 Apr 2021 14:56:23 +0000 (16:56 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Tue, 29 Jun 2021 14:23:47 +0000 (14:23 +0000)
gcc/ada/

* sem_warn.adb (Warn_On_Overlapping_Actuals): Prevent cascaded
errors once for the subprogram call, not for every pair of
actual parameters.

gcc/ada/sem_warn.adb

index 23f2771..9e337f9 100644 (file)
@@ -3729,6 +3729,11 @@ package body Sem_Warn is
 
       if Nkind (N) not in N_Subprogram_Call | N_Entry_Call_Statement then
          return;
+
+      --  Guard against previous errors
+
+      elsif Error_Posted (N) then
+         return;
       end if;
 
       --  If a call C has two or more parameters of mode in out or out that are
@@ -3800,10 +3805,9 @@ package body Sem_Warn is
                   and then Is_Composite_Type (Etype (Form1)))
                then
 
-               --  Guard against previous errors
+                  --  Guard against previous errors
 
-                  if Error_Posted (N)
-                    or else No (Etype (Act1))
+                  if No (Etype (Act1))
                     or else No (Etype (Act2))
                   then
                      null;