aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2021-10-13 13:40:28 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2021-10-20 10:17:05 +0000
commit6cf01c9277b81b81e8d09fe770b5fafe25fd880f (patch)
tree8f733e8190a671853833b4f83f9a7e90f7d5d2da /gcc
parent50cdd660b2ac54abb2659c7a88200d4c2fd1f195 (diff)
downloadgcc-6cf01c9277b81b81e8d09fe770b5fafe25fd880f.zip
gcc-6cf01c9277b81b81e8d09fe770b5fafe25fd880f.tar.gz
gcc-6cf01c9277b81b81e8d09fe770b5fafe25fd880f.tar.bz2
[Ada] Reject boxes in delta record aggregates
gcc/ada/ * sem_aggr.adb (Resolve_Delta_Record_Aggregate): Reject boxes in record delta aggregates.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/sem_aggr.adb14
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb
index e59a0e2..42fb610 100644
--- a/gcc/ada/sem_aggr.adb
+++ b/gcc/ada/sem_aggr.adb
@@ -3545,7 +3545,19 @@ package body Sem_Aggr is
end loop;
pragma Assert (Present (Comp_Type));
- Analyze_And_Resolve (Expression (Assoc), Comp_Type);
+
+ -- A record_component_association in record_delta_aggregate shall not
+ -- use the box compound delimiter <> rather than an expression; see
+ -- RM 4.3.1(17.3/5).
+
+ pragma Assert (Present (Expression (Assoc)) xor Box_Present (Assoc));
+
+ if Box_Present (Assoc) then
+ Error_Msg_N
+ ("'<'> in record delta aggregate is not allowed", Assoc);
+ else
+ Analyze_And_Resolve (Expression (Assoc), Comp_Type);
+ end if;
Next (Assoc);
end loop;
end Resolve_Delta_Record_Aggregate;