From: Samuel Tardieu Date: Mon, 18 Aug 2008 08:58:58 +0000 (+0000) Subject: re PR ada/15808 (Illegal program not detected, RM 3.9.3(10)) X-Git-Tag: releases/gcc-4.4.0~3101 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=51c16e2998aa74045dffe63e3c561b08d2e7c477;p=thirdparty%2Fgcc.git re PR ada/15808 (Illegal program not detected, RM 3.9.3(10)) gcc/ada/ PR ada/15808 * sem_ch6.adb (Check_Private_Overriding): Check for generic packages as well. gcc/testsuite/ PR ada/15808 * gnat.dg/specs/abstract_private.ads: New. From-SVN: r139190 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 8aa238fc285a..3ffa6515614e 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2008-08-18 Samuel Tardieu + + PR ada/15808 + * sem_ch6.adb (Check_Private_Overriding): Check for generic packages + as well. + 2008-08-17 Aaron W. LaFramboise * adaint.c (_gnat_set_close_on_exec) [_WIN32]: Implement. diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index 1e84b266745f..d3faa0e42054 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -6481,7 +6481,7 @@ package body Sem_Ch6 is procedure Check_Private_Overriding (T : Entity_Id) is begin - if Ekind (Current_Scope) = E_Package + if Is_Package_Or_Generic_Package (Current_Scope) and then In_Private_Part (Current_Scope) and then Visible_Part_Type (T) and then not In_Instance diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bd294ade1657..9eca6a00edbd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-08-18 Samuel Tardieu + + PR ada/15808 + * gnat.dg/specs/abstract_private.ads: New. + 2008-08-18 Richard Guenther * gcc.dg/fold-alloca-1.c: Scan cfg dump instead of cleanup_cfg1. diff --git a/gcc/testsuite/gnat.dg/specs/abstract_private.ads b/gcc/testsuite/gnat.dg/specs/abstract_private.ads new file mode 100644 index 000000000000..7420a984220f --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/abstract_private.ads @@ -0,0 +1,17 @@ +generic +package Abstract_Private is + + type T1 is abstract tagged private; + procedure P1 (X : T1) is abstract; + + type T2 is abstract tagged private; + +private + + type T1 is abstract tagged null record; + procedure P2 (X : T1) is abstract; -- { dg-error "must be visible" } + + type T2 is abstract new T1 with null record; + procedure P1 (X : T2) is abstract; + +end Abstract_Private;