Commit 4d6a38a5 by Ed Schonberg Committed by Arnaud Charlet

sem_util.adb (Wrong_Type): In any instance...

2015-05-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Wrong_Type): In any instance, do not emit error
	if type of expression is the partial view of the expected type.

2015-05-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Actuals): a)  The replacement of formal
	names in named associations only needs to be done within an
	instance, on a call to a primitive of a formal derived type,
	where the actual subprogram may have different formal names than
	those of the primitive operation of the formal type.
	b) Defaulted parameters must be taken into account when obtaining
	the names of the formals of the actual subprogram being called.

From-SVN: r223804
parent 9fb5fd44
2015-05-28 Ed Schonberg <schonberg@adacore.com>
* sem_util.adb (Wrong_Type): In any instance, do not emit error
if type of expression is the partial view of the expected type.
2015-05-28 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb (Resolve_Actuals): a) The replacement of formal
names in named associations only needs to be done within an
instance, on a call to a primitive of a formal derived type,
where the actual subprogram may have different formal names than
those of the primitive operation of the formal type.
b) Defaulted parameters must be taken into account when obtaining
the names of the formals of the actual subprogram being called.
2015-05-28 Robert Dewar <dewar@adacore.com> 2015-05-28 Robert Dewar <dewar@adacore.com>
* sem_ch13.adb, sem_disp.ads: Minor reformatting. * sem_ch13.adb, sem_disp.ads: Minor reformatting.
......
...@@ -3053,11 +3053,12 @@ package body Sem_Res is ...@@ -3053,11 +3053,12 @@ package body Sem_Res is
Real_F : Entity_Id; Real_F : Entity_Id;
Real_Subp : Entity_Id; Real_Subp : Entity_Id;
-- If the subprogram being called is an overridden operation, -- If the subprogram being called is an inherited operation for
-- Real_Subp is the subprogram that will be called. It may have -- a formal derived type in an instance, Real_Subp is the subprogram
-- different formal names than the overridden operation, so after -- that will be called. It may have different formal names than the
-- actual is resolved, the name of the actual in a named association -- operation of the formal in the generic, so after actual is resolved
-- must carry the name of the actual of the subprogram being called. -- the name of the actual in a named association must carry the name
-- of the actual of the subprogram being called.
procedure Check_Aliased_Parameter; procedure Check_Aliased_Parameter;
-- Check rules on aliased parameters and related accessibility rules -- Check rules on aliased parameters and related accessibility rules
...@@ -3569,6 +3570,7 @@ package body Sem_Res is ...@@ -3569,6 +3570,7 @@ package body Sem_Res is
if Is_Overloadable (Nam) if Is_Overloadable (Nam)
and then Is_Inherited_Operation (Nam) and then Is_Inherited_Operation (Nam)
and then In_Instance
and then Present (Alias (Nam)) and then Present (Alias (Nam))
and then Present (Overridden_Operation (Alias (Nam))) and then Present (Overridden_Operation (Alias (Nam)))
then then
...@@ -4534,10 +4536,6 @@ package body Sem_Res is ...@@ -4534,10 +4536,6 @@ package body Sem_Res is
Next_Actual (A); Next_Actual (A);
if Present (Real_Subp) then
Next_Formal (Real_F);
end if;
-- Case where actual is not present -- Case where actual is not present
else else
...@@ -4545,6 +4543,10 @@ package body Sem_Res is ...@@ -4545,6 +4543,10 @@ package body Sem_Res is
end if; end if;
Next_Formal (F); Next_Formal (F);
if Present (Real_Subp) then
Next_Formal (Real_F);
end if;
end loop; end loop;
end Resolve_Actuals; end Resolve_Actuals;
......
...@@ -19027,6 +19027,15 @@ package body Sem_Util is ...@@ -19027,6 +19027,15 @@ package body Sem_Util is
and then Covers (Full_View (Expected_Type), Etype (Expr)) and then Covers (Full_View (Expected_Type), Etype (Expr))
then then
return; return;
-- Conversely, type of expression may be the private one.
elsif Is_Private_Type (Base_Type (Etype (Expr)))
and then Full_View (Base_Type (Etype (Expr))) =
Expected_Type
then
return;
end if; end if;
end if; end if;
......
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