[Ada] Refactor appending to possibly empty lists
authorPiotr Trojanek <trojanek@adacore.com>
Tue, 18 Aug 2020 09:49:35 +0000 (11:49 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Thu, 22 Oct 2020 12:11:23 +0000 (08:11 -0400)
gcc/ada/

* exp_prag.adb (Expand_Pragma_Contract_Cases,
Expand_Pragma_Loop_Variant): Reuse Append_New_To.
* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Fix typo.
(Analyze_Pre_Post_Condition): Refactor repeated calls to
Defining_Entity.

gcc/ada/exp_prag.adb
gcc/ada/sem_prag.adb

index 050b05c578a11f34a2dacae101a0e53a930eb408..d3c63f457a0456daf0c23619f97c97072e563243 100644 (file)
@@ -1831,11 +1831,7 @@ package body Exp_Prag is
       --  Raise Assertion_Error when the corresponding consequence of a case
       --  guard that evaluated to True fails.
 
-      if No (Stmts) then
-         Stmts := New_List;
-      end if;
-
-      Append_To (Stmts, Conseq_Checks);
+      Append_New_To (Stmts, Conseq_Checks);
 
       In_Assertion_Expr := In_Assertion_Expr - 1;
    end Expand_Pragma_Contract_Cases;
@@ -2451,28 +2447,20 @@ package body Exp_Prag is
 
          --  Step 3: Store value of the expression from the previous iteration
 
-         if No (Old_Assign) then
-            Old_Assign := New_List;
-         end if;
-
          --  Generate:
          --    Old := Curr;
 
-         Append_To (Old_Assign,
+         Append_New_To (Old_Assign,
            Make_Assignment_Statement (Loc,
              Name       => New_Occurrence_Of (Old_Id, Loc),
              Expression => New_Occurrence_Of (Curr_Id, Loc)));
 
          --  Step 4: Store the current value of the expression
 
-         if No (Curr_Assign) then
-            Curr_Assign := New_List;
-         end if;
-
          --  Generate:
          --    Curr := <Expr>;
 
-         Append_To (Curr_Assign,
+         Append_New_To (Curr_Assign,
            Make_Assignment_Statement (Loc,
              Name       => New_Occurrence_Of (Curr_Id, Loc),
              Expression => Relocate_Node (Expr)));
index 4c7131accf1135598f08b8fc3d1051d0f4e5b8ca..b4744bfa59226a816d336d74c2ae7c0f197c8e72 100644 (file)
@@ -544,7 +544,7 @@ package body Sem_Prag is
       Set_Ghost_Mode (N);
 
       --  Single and multiple contract cases must appear in aggregate form. If
-      --  this is not the case, then either the parser of the analysis of the
+      --  this is not the case, then either the parser or the analysis of the
       --  pragma failed to produce an aggregate.
 
       pragma Assert (Nkind (CCases) = N_Aggregate);
@@ -4798,7 +4798,7 @@ package body Sem_Prag is
          --  Chain the pragma on the contract for further processing by
          --  Analyze_Pre_Post_Condition_In_Decl_Part.
 
-         Add_Contract_Item (N, Defining_Entity (Subp_Decl));
+         Add_Contract_Item (N, Subp_Id);
 
          --  Fully analyze the pragma when it appears inside an entry or
          --  subprogram body because it cannot benefit from forward references.