From a6d7dfbbb2f1fe25e040a31f17c03d292b5b5b61 Mon Sep 17 00:00:00 2001 From: Ed Schonberg Date: Thu, 30 Apr 2020 15:19:16 -0400 Subject: [PATCH] [Ada] Spurious error on private type in ghost expression function 2020-06-19 Ed Schonberg gcc/ada/ * sem_ch6.adb (Analyze_Expression_Function): Do not indicate that the function has a completion if it appears within a Ghost generic package. --- gcc/ada/sem_ch6.adb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index 59cbccd..69e21bb 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -499,9 +499,14 @@ package body Sem_Ch6 is -- Within a generic preanalyze the original expression for name -- capture. The body is also generated but plays no role in -- this because it is not part of the original source. + -- If this is an ignored Ghost entity, analysis of the generated + -- body is needed to hide external references (as is done in + -- Analyze_Subprogram_Body) after which the the subprogram profile + -- can be frozen, which is needed to expand calls to such an ignored + -- Ghost subprogram. if Inside_A_Generic then - Set_Has_Completion (Def_Id); + Set_Has_Completion (Def_Id, not Is_Ignored_Ghost_Entity (Def_Id)); Push_Scope (Def_Id); Install_Formals (Def_Id); Preanalyze_Spec_Expression (Expr, Etype (Def_Id)); -- 2.7.4