From 9da8032d4b0b5ca8cf5397b617cbcef55f735e19 Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Fri, 25 May 2018 09:03:54 +0000 Subject: [PATCH] [Ada] Rewrite Iterate_Call_Parameters in more assertive style 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 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 | 6 ++++++ gcc/ada/sem_util.adb | 9 ++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 6f261dba21b..0095f855048 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2018-05-25 Piotr Trojanek + + * 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 * libgnarl/s-osinte__aix.ads, libgnarl/s-osinte__android.ads, diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index d205e58f8dc..08ed9bff6c8 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -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; --------------------------- -- 2.30.2