Commit 2e885093 by Arnaud Charlet Committed by Arnaud Charlet

sem_util.ads (Unique_Defining_Entity): Document the result for tasks and entries.

2015-10-23  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.ads (Unique_Defining_Entity): Document the result
	for tasks and entries.
	* sem_util.adb (Unique_Entity): Return declaration entity for task and
	entry bodies

From-SVN: r229222
parent 67dbe582
2015-10-23 Arnaud Charlet <charlet@adacore.com>
* sem_util.ads (Unique_Defining_Entity): Document the result
for tasks and entries.
* sem_util.adb (Unique_Entity): Return declaration entity for task and
entry bodies
2015-10-22 Mikhail Maltsev <maltsevm@gmail.com>
* gcc-interface/decl.c (gnat_to_gnu_entity): Use gcc_checking_assert.
......
......@@ -19082,6 +19082,32 @@ package body Sem_Util is
U := Spec_Entity (E);
end if;
when E_Task_Body =>
P := Parent (E);
U := Corresponding_Spec (P);
when E_Entry =>
if Nkind (Parent (E)) = N_Entry_Body then
declare
Decl : Entity_Id := First_Entity (Scope (E));
begin
-- Traverse the entity list of the protected object
-- and locate an entry declaration with a matching
-- Corresponding_Body.
while Present (Decl) loop
if Ekind (Decl) = E_Entry
and then Corresponding_Body (Parent (Decl)) = E
then
U := Decl;
exit;
end if;
Next_Entity (Decl);
end loop;
pragma Assert (Present (Decl));
end;
end if;
when others =>
null;
end case;
......
......@@ -2105,6 +2105,8 @@ package Sem_Util is
-- views of the same entity have the same unique defining entity:
-- * package spec and body;
-- * subprogram declaration, subprogram stub and subprogram body;
-- * entry declaration and entry body;
-- * task declaration, task body stub and task body;
-- * private view and full view of a type;
-- * private view and full view of a deferred constant.
-- In other cases, return the defining entity for N.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment