diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index ecb970a0e8b..2a96c895dd6 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2001-10-25 Ed Schonberg + + * sem_util.adb (Enter_Name): better handling of cascaded error + messages when a unit appears in its own context. + 2001-10-25 Ed Schonberg * sem_util.adb (Defining_Entity): in case of error, attach created diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 7bc2b9230c0..e53f8718de2 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -1602,6 +1602,18 @@ package body Sem_Util is Error_Msg_N ("& conflicts with declaration#", E); return; + -- If the name of the unit appears in its own context clause, + -- a dummy package with the name has already been created, and + -- the error emitted. Try to continue quietly. + + elsif Error_Posted (E) + and then Sloc (E) = No_Location + and then Nkind (Parent (E)) = N_Package_Specification + and then Current_Scope = Standard_Standard + then + Set_Scope (Def_Id, Current_Scope); + return; + else Error_Msg_N ("& conflicts with declaration#", Def_Id);