From: Bob Duff <d...@adacore.com> Correct Enclosing_Entity of specless subprogram bodies; these are marked as Comes_From_Source = False, so the simple name was missing.
gcc/ada/ChangeLog: * sem_util.adb (Append_Entity_Name): Do not skip the simple name for a compilation unit (which includes the case of specless subprogram bodies). Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_util.adb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 4a26d962303..44a87298c6e 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -649,18 +649,21 @@ package body Sem_Util is -- recursively print A.B.C, then print D. begin -- If E is not a source entity, then skip the simple name and just - -- recursively print its scope. However, subprogram instances have - -- Comes_From_Source = False, but we do want to print the simple name - -- of the instance. + -- recursively print its scope. However, certain entities have + -- Comes_From_Source = False, even though we DO want to print the + -- simple name; this happens for specless child subprogram bodies + -- and for subprogram instances. if not Comes_From_Source (E) then - if Is_Generic_Instance (E) + if Is_Compilation_Unit (E) then + null; + elsif Is_Generic_Instance (E) and then Ekind (E) in E_Function | E_Procedure then null; else Append_Entity_Name (Buf, Scope (E)); - return; + return; -- skip the simple name end if; end if; -- 2.43.0