ada: Cleanup inconsistent iteration over exception handlers
commit47a084d96bb880d9c33b6be04aad883f1da2ad62
authorPiotr Trojanek <trojanek@adacore.com>
Tue, 28 Feb 2023 09:36:54 +0000 (28 10:36 +0100)
committerMarc Poulhiès <poulhies@adacore.com>
Tue, 23 May 2023 07:59:07 +0000 (23 09:59 +0200)
treea5f3cbfa05b65564b8916d0ea0a94e06ab956a73
parentac243c845a2049c3e302a8ae81a01b53b467a2ff
ada: Cleanup inconsistent iteration over exception handlers

When detecting duplicate choices in exception handlers we had
inconsistent pairs of First/Next_Non_Pragma and First_Non_Pragma/Next.
This was harmless, because exception choices don't allow pragmas at all,
e.g.:

   when Program_Error | Constraint_Error | ...; --  pragma not allowed

and exception handlers only allow pragmas to appear as the first item
on the list, e.g.:

   exception
      pragma Inspection_Point;   --  first item on the list of handlers
      when Program_Error =>
         <statements>
      pragma Inspection_Point;   --  last item on the list of statements
      when Constraint_Error =>
         ...

However, it still seems cleaner to have consistent pairs of First/Next
and First_Non_Pragma/Next_Non_Pragma.

gcc/ada/

* sem_ch11.adb
(Check_Duplication): Fix inconsistent iteration.
(Others_Present): Iterate over handlers using First_Non_Pragma and
Next_Non_Pragma just like in Check_Duplication.
gcc/ada/sem_ch11.adb