diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/ada/sem_ch9.adb | 8 |
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 6f04f77..c875ac3 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2019-07-05 Ed Schonberg <schonberg@adacore.com> + + * sem_ch9.adb (Analyze_Accept_Statement): If this is an illegal + accept statement for an enclosing entry abandon analysis to + prevent scope mismatches and potential infinite loops in + compiler. + 2019-07-05 Hristian Kirtchev <kirtchev@adacore.com> * ali.adb (For_Each_Invocation_Construct, diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb index a71c35c..19fff57 100644 --- a/gcc/ada/sem_ch9.adb +++ b/gcc/ada/sem_ch9.adb @@ -883,7 +883,13 @@ package body Sem_Ch9 is exit when Task_Nam = Scope_Stack.Table (J).Entity; if Entry_Nam = Scope_Stack.Table (J).Entity then - Error_Msg_N ("duplicate accept statement for same entry", N); + Error_Msg_N + ("duplicate accept statement for same entry (RM 9.5.2 (15))", N); + + -- Do not continue analysis of accept statement, to prevent + -- cascaded errors. + + return; end if; end loop; |