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