[Ada] Reject boxes in delta record aggregates
Commit Message
Implement Ada 2022 4.3.1(17.3/5), prevents box compound delimiter <> to
appear in record delta aggregates.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* sem_aggr.adb (Resolve_Delta_Record_Aggregate): Reject boxes in
record delta aggregates.
@@ -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;