Commit e0ba1bfd by Ed Schonberg Committed by Arnaud Charlet

sem_ch4.adb (Analyze_Conditional_Expression): handle properly overloaded…

sem_ch4.adb (Analyze_Conditional_Expression): handle properly overloaded expressions in a conditional expressions.

2009-07-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Conditional_Expression): handle properly
	overloaded expressions in a conditional expressions.

	* sem_res.adb (Resolve): Handle properly overloaded conditional
	expressions.

From-SVN: r149317
parent b46be8a2
2009-07-07 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Analyze_Conditional_Expression): handle properly
overloaded expressions in a conditional expressions.
* sem_res.adb (Resolve): Handle properly overloaded conditional
expressions.
2009-07-07 Robert Dewar <dewar@adacore.com>
* scng.adb: Minor reformattting
......
......@@ -1250,7 +1250,25 @@ package body Sem_Ch4 is
Analyze_Expression (Else_Expr);
end if;
if not Is_Overloaded (Then_Expr) then
Set_Etype (N, Etype (Then_Expr));
else
declare
I : Interp_Index;
It : Interp;
begin
Set_Etype (N, Any_Type);
Get_First_Interp (Then_Expr, I, It);
while Present (It.Nam) loop
if Has_Compatible_Type (Else_Expr, It.Typ) then
Add_One_Interp (N, It.Typ, It.Typ);
end if;
Get_Next_Interp (I, It);
end loop;
end;
end if;
end Analyze_Conditional_Expression;
-------------------------
......
......@@ -2146,6 +2146,9 @@ package body Sem_Res is
elsif Nkind (N) = N_Character_Literal then
Set_Etype (N, Expr_Type);
elsif Nkind (N) = N_Conditional_Expression then
Set_Etype (N, Expr_Type);
-- For an explicit dereference, attribute reference, range,
-- short-circuit form (which is not an operator node), or call
-- with a name that is an explicit dereference, there is
......
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