aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2021-10-14 17:50:43 +0200
committerMarc Poulhiès <poulhies@adacore.com>2022-11-07 09:36:32 +0100
commit2caaa4bf336bce2a7d649aa05f2851d576a26e5e (patch)
tree980cccaf56c40ae8322dcc3ea41f25a6129dd043 /gcc
parent8f077c4d05876bf952c86131e477d21dc5d4492b (diff)
downloadgcc-2caaa4bf336bce2a7d649aa05f2851d576a26e5e.zip
gcc-2caaa4bf336bce2a7d649aa05f2851d576a26e5e.tar.gz
gcc-2caaa4bf336bce2a7d649aa05f2851d576a26e5e.tar.bz2
ada: Reject boxes in delta array aggregates
Implement Ada 2022 4.3.4(11/5), which rejects box compound delimiter <> in delta record aggregates, just like another rule rejects it in delta array aggregates. gcc/ada/ * sem_aggr.adb (Resolve_Delta_Array_Aggregate): Reject boxes in delta array aggregates.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/sem_aggr.adb13
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb
index 87a8c1a..31ce9ca 100644
--- a/gcc/ada/sem_aggr.adb
+++ b/gcc/ada/sem_aggr.adb
@@ -3531,7 +3531,18 @@ package body Sem_Aggr is
Next (Choice);
end loop;
- Analyze_And_Resolve (Expression (Assoc), Component_Type (Typ));
+ -- For an array_delta_aggregate, the array_component_association
+ -- shall not use the box symbol <>; RM 4.3.4(11/5).
+
+ pragma Assert
+ (Box_Present (Assoc) xor Present (Expression (Assoc)));
+
+ if Box_Present (Assoc) then
+ Error_Msg_N
+ ("'<'> in array delta aggregate is not allowed", Assoc);
+ else
+ Analyze_And_Resolve (Expression (Assoc), Component_Type (Typ));
+ end if;
end if;
Next (Assoc);