diff options
Diffstat (limited to 'gcc/ada/sem_ch3.adb')
-rw-r--r-- | gcc/ada/sem_ch3.adb | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index be0fa8f6506..4dec6ff44f4 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -3466,7 +3466,17 @@ package body Sem_Ch3 is N_Package_Renaming_Declaration and then not Comes_From_Source (Prev_Entity) and then - Is_Generic_Instance (Renamed_Entity (Prev_Entity)))) + Is_Generic_Instance (Renamed_Entity (Prev_Entity))) + + -- The entity may be a homonym of a private component of the + -- enclosing protected object, for which we create a local + -- renaming declaration. The declaration is legal, even + -- if useless when it just captures that component. + + or else + (Ekind (Scope (Current_Scope)) = E_Protected_Type + and then Nkind (Parent (Prev_Entity)) = + N_Object_Renaming_Declaration)) then Prev_Entity := Empty; end if; |