From: Ed Schonberg Date: Thu, 30 Apr 2020 19:19:16 +0000 (-0400) Subject: [Ada] Spurious error on private type in ghost expression function X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a6d7dfbbb2f1fe25e040a31f17c03d292b5b5b61;p=gcc.git [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. --- diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index 59cbccdafa0..69e21bbc9d6 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));