[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  <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
This commit is contained in:
Piotr Trojanek 2018-05-25 09:03:54 +00:00 committed by Pierre-Marie de Rodat
parent 5865218e3b
commit 9da8032d4b
2 changed files with 12 additions and 3 deletions

View 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,

View 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;
---------------------------