From: Ronan Desplanques <desplanq...@adacore.com> Access parameters are not allowed in specifications of task entries. Before this patch, the compiler failed to detect that case in accept statements that were not directly in their task body's scopes. This patch fixes this issue.
gcc/ada/ChangeLog: * sem_ch3.adb (Access_Definition): Remove test for task entry context. * sem_ch6.adb (Process_Formals): Add improved test for task entry context. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_ch3.adb | 7 ------- gcc/ada/sem_ch6.adb | 10 ++++++++++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index a5d69c33b15..11f69db21dc 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -761,13 +761,6 @@ package body Sem_Ch3 is Enclosing_Prot_Type : Entity_Id := Empty; begin - if Is_Entry (Current_Scope) - and then Is_Task_Type (Etype (Scope (Current_Scope))) - then - Error_Msg_N ("task entries cannot have access parameters", N); - return Empty; - end if; - -- Ada 2005: For an object declaration the corresponding anonymous -- type is declared in the current scope. diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index 16f296523f4..1ac76bbd0db 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -13144,6 +13144,16 @@ package body Sem_Ch6 is -- An access formal type else + if Nkind (Parent (T)) = N_Accept_Statement + or else (Nkind (Parent (T)) = N_Entry_Declaration + and then Nkind (Context) = N_Task_Definition) + then + Error_Msg_N + ("task entries cannot have access parameters", + Parameter_Type (Param_Spec)); + return; + end if; + Formal_Type := Access_Definition (Related_Nod, Parameter_Type (Param_Spec)); -- 2.43.0