aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2023-03-21 09:46:57 +0100
committerMarc Poulhiès <poulhies@adacore.com>2023-05-26 09:29:16 +0200
commit16c320507774ca38e0eb3d1c4116c9dcb3f2e598 (patch)
tree1232c65e52fbc5f9bbfb24d62caed66d7d2cc22c /gcc
parentbdda3d2960f884488cf9fcc817a541e709ddb7e7 (diff)
downloadgcc-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.adb4
-rw-r--r--gcc/ada/sem_ch3.adb4
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;