mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
[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:
committed by
Pierre-Marie de Rodat
parent
3e07c2df70
commit
663e6d7960
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user