[Ada] Use more straightforward implementation for Current_Entity_In_Scope

gcc/ada/

	* sem_util.adb (Current_Entity_In_Scope): Reimplement.
This commit is contained in:
Eric Botcazou
2021-02-21 18:27:25 +01:00
committed by Pierre-Marie de Rodat
parent 3e07c2df70
commit 663e6d7960

View File

@@ -6955,19 +6955,30 @@ package body Sem_Util is
-----------------------------
function Current_Entity_In_Scope (N : Name_Id) return Entity_Id is
E : Entity_Id;
CS : constant Entity_Id := Current_Scope;
Transient_Case : constant Boolean := Scope_Is_Transient;
E : Entity_Id;
begin
E := Get_Name_Entity_Id (N);
while Present (E)
and then Scope (E) /= CS
and then (not Transient_Case or else Scope (E) /= Scope (CS))
loop
E := Homonym (E);
end loop;
if No (E) then
null;
elsif Scope_Is_Transient then
while Present (E) loop
exit when Scope (E) = CS or else Scope (E) = Scope (CS);
E := Homonym (E);
end loop;
else
while Present (E) loop
exit when Scope (E) = CS;
E := Homonym (E);
end loop;
end if;
return E;
end Current_Entity_In_Scope;