[Ada] Rewrite Iterate_Call_Parameters in more assertive style
authorPiotr Trojanek <trojanek@adacore.com>
Fri, 25 May 2018 09:03:54 +0000 (09:03 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Fri, 25 May 2018 09:03:54 +0000 (09:03 +0000)
The formal and actual parameters in a subprogram call must match each other.
This is now checked with assertion (so that we can detect possible mistakes),
while the production builds have less work to do. Semantics unchanged.

2018-05-25  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* sem_util.adb (Iterate_Call_Parameters): Rewrite with extra
assertions; replace function versions of Next_Formal/Next_Actual with
their procedural versions (which are more concise).

From-SVN: r260725

gcc/ada/ChangeLog
gcc/ada/sem_util.adb

index 6f261dba21b0506d85d3d4a1e108782306858396..0095f855048a294e47573c18d8a8f661ce4f1d57 100644 (file)
@@ -1,3 +1,9 @@
+2018-05-25  Piotr Trojanek  <trojanek@adacore.com>
+
+       * sem_util.adb (Iterate_Call_Parameters): Rewrite with extra
+       assertions; replace function versions of Next_Formal/Next_Actual with
+       their procedural versions (which are more concise).
+
 2018-05-25  Doug Rupp  <rupp@adacore.com>
 
        * libgnarl/s-osinte__aix.ads, libgnarl/s-osinte__android.ads,
index d205e58f8dc64d99816a415ea23634413be0bd74..08ed9bff6c89164999f16235a24c8d7ba4080724 100644 (file)
@@ -17882,11 +17882,14 @@ package body Sem_Util is
       Actual : Node_Id   := First_Actual (Call);
 
    begin
-      while Present (Formal) and then Present (Actual) loop
+      while Present (Formal) loop
+         pragma Assert (Present (Formal));
          Handle_Parameter (Formal, Actual);
-         Formal := Next_Formal (Formal);
-         Actual := Next_Actual (Actual);
+         Next_Formal (Formal);
+         Next_Actual (Actual);
       end loop;
+
+      pragma Assert (No (Actual));
    end Iterate_Call_Parameters;
 
    ---------------------------