sem_ch6.adb (Conforming_Types): If the types are anonymous access types check whether some designated type is a...

2005-07-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Conforming_Types): If the types are anonymous access
	types check whether some designated type is a limited view, and use
	the non-limited view if available.

From-SVN: r101588
This commit is contained in:
Ed Schonberg 2005-07-04 15:29:47 +02:00 committed by Arnaud Charlet
parent d3e65aad2c
commit 9dcb52e145
1 changed files with 16 additions and 8 deletions

View File

@ -3326,19 +3326,27 @@ package body Sem_Ch6 is
Desig_1 := Directly_Designated_Type (Type_1);
-- An access parameter can designate an incomplete type
-- If the incomplete type is the limited view of a type
-- from a limited_with_clause, check whether the non-limited
-- view is available.
if Ekind (Desig_1) = E_Incomplete_Type
and then Present (Full_View (Desig_1))
then
Desig_1 := Full_View (Desig_1);
if Ekind (Desig_1) = E_Incomplete_Type then
if Present (Full_View (Desig_1)) then
Desig_1 := Full_View (Desig_1);
elsif Present (Non_Limited_View (Desig_1)) then
Desig_1 := Non_Limited_View (Desig_1);
end if;
end if;
Desig_2 := Directly_Designated_Type (Type_2);
if Ekind (Desig_2) = E_Incomplete_Type
and then Present (Full_View (Desig_2))
then
Desig_2 := Full_View (Desig_2);
if Ekind (Desig_2) = E_Incomplete_Type then
if Present (Full_View (Desig_2)) then
Desig_2 := Full_View (Desig_2);
elsif Present (Non_Limited_View (Desig_2)) then
Desig_2 := Non_Limited_View (Desig_2);
end if;
end if;
-- The context is an instance association for a formal