Commit c2bf339e by Gary Dismukes Committed by Arnaud Charlet

sem_eval.adb (Subtypes_Statically_Match): Use the discriminant constraint of…

sem_eval.adb (Subtypes_Statically_Match): Use the discriminant constraint of full view of a private view T1 if present...

2005-07-04  Gary Dismukes  <dismukes@adacore.com>

	* sem_eval.adb (Subtypes_Statically_Match): Use the discriminant
	constraint of full view of a private view T1 if present, when T2 is a
	discriminated full view.

From-SVN: r101589
parent 9dcb52e1
......@@ -3927,15 +3927,30 @@ package body Sem_Eval is
elsif Has_Discriminants (T1) or else Has_Discriminants (T2) then
-- We really need comments here ???
-- Because of view exchanges in multiple instantiations, conformance
-- checking might try to match a partial view of a type with no
-- discriminants with a full view that has defaulted discriminants.
-- In such a case, use the discriminant constraint of the full view,
-- which must exist because we know that the two subtypes have the
-- same base type.
if Has_Discriminants (T1) /= Has_Discriminants (T2) then
if In_Instance
and then Is_Private_Type (T2)
and then Present (Full_View (T2))
and then Has_Discriminants (Full_View (T2))
then
return Subtypes_Statically_Match (T1, Full_View (T2));
if In_Instance then
if Is_Private_Type (T2)
and then Present (Full_View (T2))
and then Has_Discriminants (Full_View (T2))
then
return Subtypes_Statically_Match (T1, Full_View (T2));
elsif Is_Private_Type (T1)
and then Present (Full_View (T1))
and then Has_Discriminants (Full_View (T1))
then
return Subtypes_Statically_Match (Full_View (T1), T2);
else
return False;
end if;
else
return False;
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