[Ada] Mixing of positional and named entries allowed in enum rep

gcc/ada/

	* sem_ch13.adb (Analyze_Enumeration_Representation_Clause): Add
	check for the mixing of entries.
This commit is contained in:
Justin Squirek 2021-02-27 14:16:32 -05:00 committed by Pierre-Marie de Rodat
parent c5dc00ef38
commit e66167fb49

View File

@ -7999,6 +7999,15 @@ package body Sem_Ch13 is
("extra parentheses surrounding aggregate not allowed", Aggr);
return;
-- Reject the mixing of named and positional entries in the aggregate
elsif Present (Expressions (Aggr))
and then Present (Component_Associations (Aggr))
then
Error_Msg_N ("cannot mix positional and named entries in "
& "enumeration rep clause", N);
return;
-- All tests passed, so set rep clause in place
else
@ -8013,7 +8022,7 @@ package body Sem_Ch13 is
Elit := First_Literal (Enumtype);
-- First the positional entries if any
-- Process positional entries
if Present (Expressions (Aggr)) then
Expr := First (Expressions (Aggr));
@ -8042,11 +8051,10 @@ package body Sem_Ch13 is
Next (Expr);
Next (Elit);
end loop;
end if;
-- Now process the named entries if present
-- Process named entries
if Present (Component_Associations (Aggr)) then
elsif Present (Component_Associations (Aggr)) then
Assoc := First (Component_Associations (Aggr));
while Present (Assoc) loop
Choice := First (Choices (Assoc));