Commit ca14fd02 by Ed Schonberg Committed by Arnaud Charlet

sem_disp.adb (Find_Controlling_Arg): Examine the call node before examining its original form...

2007-10-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Find_Controlling_Arg): Examine the call node before
	examining its original form, to handle properly operator calls that
	have been rewritten.

From-SVN: r129337
parent 81db9d77
......@@ -1132,9 +1132,21 @@ package body Sem_Disp is
return Find_Controlling_Arg (Expression (Orig_Node));
end if;
-- Dispatching on result case
-- Dispatching on result case. If expansion is disabled, the node still
-- has the structure of a function call. However, if the function name
-- is an operator and the call was given in infix form, the original
-- node has no controlling result and we must examine the current node.
if Nkind (N) = N_Function_Call
and then Present (Controlling_Argument (N))
and then Has_Controlling_Result (Entity (Name (N)))
then
return Controlling_Argument (N);
if Nkind (Orig_Node) = N_Function_Call
-- If expansion is enabled, the call may have been transformed into
-- an indirect call, and we need to recover the original node.
elsif Nkind (Orig_Node) = N_Function_Call
and then Present (Controlling_Argument (Orig_Node))
and then Has_Controlling_Result (Entity (Name (Orig_Node)))
then
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment