From: Arnaud Charlet Date: Tue, 5 Aug 2008 09:40:19 +0000 (+0200) Subject: sem_ch12.adb (Validate_Array_Type_Instance): Only apply complex visibility check... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ba3fa650377b5a8fcea6a9f2cb01628c0885f910;p=gcc.git sem_ch12.adb (Validate_Array_Type_Instance): Only apply complex visibility check on the component type if the simple test fails. 2008-08-05 Ed Schonberg * sem_ch12.adb (Validate_Array_Type_Instance): Only apply complex visibility check on the component type if the simple test fails. From-SVN: r138697 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 9a4800006c7..2628acedb22 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,14 @@ +2008-08-05 Robert Dewar + + * sem_ch3.adb: Minor reformatting + + * prj-nmsc.adb: Minor reformatting + +2008-08-05 Ed Schonberg + + * sem_ch12.adb (Validate_Array_Type_Instance): Only apply complex + visibility check on the component type if the simple test fails. + 2008-08-05 Jose Ruiz * init.c (__gnat_install_handler for linux): If we are building the diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index 147a097aa07..dc23ddea238 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -9246,10 +9246,20 @@ package body Sem_Ch12 is Next_Index (I2); end loop; - if not Subtypes_Match - (Find_Actual_Type (Component_Type (A_Gen_T), A_Gen_T), - Component_Type (Act_T)) + -- Check matching subtypes. Note that there are complex visibility + -- issues when the generic is a child unit and some aspect of the + -- generic type is declared in a parent unit of the generic. We do + -- the test to handle this special case only after a direct check + -- for static matching has failed. + + if Subtypes_Match + (Component_Type (A_Gen_T), Component_Type (Act_T)) + or else Subtypes_Match + (Find_Actual_Type (Component_Type (A_Gen_T), A_Gen_T), + Component_Type (Act_T)) then + null; + else Error_Msg_NE ("component subtype of actual does not match that of formal &", Actual, Gen_T);