diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2023-03-21 09:46:57 +0100 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2023-05-26 09:29:16 +0200 |
commit | 16c320507774ca38e0eb3d1c4116c9dcb3f2e598 (patch) | |
tree | 1232c65e52fbc5f9bbfb24d62caed66d7d2cc22c /gcc | |
parent | bdda3d2960f884488cf9fcc817a541e709ddb7e7 (diff) | |
download | gcc-16c320507774ca38e0eb3d1c4116c9dcb3f2e598.zip gcc-16c320507774ca38e0eb3d1c4116c9dcb3f2e598.tar.gz gcc-16c320507774ca38e0eb3d1c4116c9dcb3f2e598.tar.bz2 |
ada: Fix iteration over component items with pragmas
Component items in a record declaration might include pragmas, which
must be ignored when detecting components with default expressions.
More a code cleanup than a bugfix, as it only affects artificial corner
cases. Found while fixing missing legality checks for variant component
declarations.
gcc/ada/
* sem_ch3.adb (Check_CPP_Type_Has_No_Defaults): Iterate with
First_Non_Pragma and Next_Non_Pragma.
* exp_dist.adb (Append_Record_Traversal): Likewise.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/exp_dist.adb | 4 | ||||
-rw-r--r-- | gcc/ada/sem_ch3.adb | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/gcc/ada/exp_dist.adb b/gcc/ada/exp_dist.adb index 8f62bef..f025b56 100644 --- a/gcc/ada/exp_dist.adb +++ b/gcc/ada/exp_dist.adb @@ -8304,7 +8304,7 @@ package body Exp_Dist is CI := Component_Items (Clist); VP := Variant_Part (Clist); - Item := First (CI); + Item := First_Non_Pragma (CI); while Present (Item) loop Def := Defining_Identifier (Item); @@ -8313,7 +8313,7 @@ package body Exp_Dist is (Stmts, Container, Counter, Rec, Def); end if; - Next (Item); + Next_Non_Pragma (Item); end loop; if Present (VP) then diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 9e32dea..fb4f5ba 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -12312,7 +12312,7 @@ package body Sem_Ch3 is -- Check all components to ensure no default expressions if Present (Clist) then - Comp := First (Component_Items (Clist)); + Comp := First_Non_Pragma (Component_Items (Clist)); while Present (Comp) loop if Present (Expression (Comp)) then Error_Msg_N @@ -12320,7 +12320,7 @@ package body Sem_Ch3 is & "default expression", Expression (Comp)); end if; - Next (Comp); + Next_Non_Pragma (Comp); end loop; end if; end Check_CPP_Type_Has_No_Defaults; |