[COMMITTED] ada: Reuse routine for getting from body entity to spec entity
Commit Message
From: Piotr Trojanek <trojanek@adacore.com>
Cleanup related to handling of access-to-subprogram types with Pre and
Post aspects. Behavior is unaffected.
gcc/ada/
* sem_util.adb (Check_Result_And_Post_State): Replace low-level
navigation with a high-level Unique_Entity.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/sem_util.adb | 22 +---------------------
1 file changed, 1 insertion(+), 21 deletions(-)
@@ -4546,13 +4546,12 @@ package body Sem_Util is
-- Local variables
Items : constant Node_Id := Contract (Subp_Id);
- Subp_Decl : constant Node_Id := Unit_Declaration_Node (Subp_Id);
Case_Prag : Node_Id := Empty;
Post_Prag : Node_Id := Empty;
Prag : Node_Id;
Seen_In_Case : Boolean := False;
Seen_In_Post : Boolean := False;
- Spec_Id : Entity_Id;
+ Spec_Id : constant Entity_Id := Unique_Entity (Subp_Id);
-- Start of processing for Check_Result_And_Post_State
@@ -4570,25 +4569,6 @@ package body Sem_Util is
return;
end if;
- -- Retrieve the entity of the subprogram spec (if any)
-
- if Nkind (Subp_Decl) = N_Subprogram_Body
- and then Present (Corresponding_Spec (Subp_Decl))
- then
- Spec_Id := Corresponding_Spec (Subp_Decl);
-
- elsif Nkind (Subp_Decl) = N_Subprogram_Body_Stub
- and then Present (Corresponding_Spec_Of_Stub (Subp_Decl))
- then
- Spec_Id := Corresponding_Spec_Of_Stub (Subp_Decl);
-
- elsif Nkind (Subp_Decl) = N_Entry_Body then
- Spec_Id := Corresponding_Spec (Subp_Decl);
-
- else
- Spec_Id := Subp_Id;
- end if;
-
-- Examine all postconditions for attribute 'Result and a post-state
Prag := Pre_Post_Conditions (Items);