aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2023-05-03 11:39:52 +0200
committerMarc Poulhiès <poulhies@adacore.com>2023-06-13 09:31:45 +0200
commit0f1e602e9e34e59e1cab44ecf3da72c450a48267 (patch)
treea1347608da11a91f73e4b8dcd82662041420d7f3 /gcc
parent8c748260776d672949ce02c9aa93292e0d6bc206 (diff)
downloadgcc-0f1e602e9e34e59e1cab44ecf3da72c450a48267.zip
gcc-0f1e602e9e34e59e1cab44ecf3da72c450a48267.tar.gz
gcc-0f1e602e9e34e59e1cab44ecf3da72c450a48267.tar.bz2
ada: Recognize iterated_component_association as potentially unevaluated
Routine Is_Potentially_Unevaluated was written for Ada 2012, but now we use it for Ada 2022 as well, so it must recognize iterated component associations (which were added by Ada 2022) as an array component association. gcc/ada/ * sem_util.adb (Is_Potentially_Unevaluated): Recognize iterated component association as potentially unevaluated.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/sem_util.adb14
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index b82978b..23668f1 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -19566,7 +19566,8 @@ package body Sem_Util is
elsif Nkind (Par) = N_Quantified_Expression then
return Expr = Condition (Par);
- elsif Nkind (Par) = N_Component_Association
+ elsif Nkind (Par) in N_Component_Association
+ | N_Iterated_Component_Association
and then Expr = Expression (Par)
and then Nkind (Parent (Par))
in N_Aggregate | N_Delta_Aggregate | N_Extension_Aggregate
@@ -19708,10 +19709,15 @@ package body Sem_Util is
then
return True;
- -- For component associations continue climbing; it may be part of
- -- an array aggregate.
+ -- For component associations continue climbing; it may be part of an
+ -- array aggregate. For iterated component association we know that
+ -- it belongs to an array aggreate, but only its expression is
+ -- potentially unevaluated, not discrete choice list or iterator
+ -- specification.
- elsif Nkind (Par) = N_Component_Association then
+ elsif Nkind (Par) in N_Component_Association
+ | N_Iterated_Component_Association
+ then
null;
-- If the context is not an expression, or if is the result of