From: Justin Squirek Date: Sat, 27 Feb 2021 19:16:32 +0000 (-0500) Subject: [Ada] Mixing of positional and named entries allowed in enum rep X-Git-Tag: basepoints/gcc-13~6803 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e66167fb494aa8839a8ef3fc283adc447718d514;p=thirdparty%2Fgcc.git [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. --- diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index 4fa17f1ddb41..3c3e35150e9f 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -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));