aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2008-08-18 08:58:58 +0000
committerSamuel Tardieu <sam@gcc.gnu.org>2008-08-18 08:58:58 +0000
commit51c16e2998aa74045dffe63e3c561b08d2e7c477 (patch)
tree54c5399623b2c762b2b2cc9fa37c7de90d914847
parent11b08ee9118d107d2222a47f1994b43ddbd29ab8 (diff)
downloadgcc-51c16e2998aa74045dffe63e3c561b08d2e7c477.zip
gcc-51c16e2998aa74045dffe63e3c561b08d2e7c477.tar.gz
gcc-51c16e2998aa74045dffe63e3c561b08d2e7c477.tar.bz2
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
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/sem_ch6.adb2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gnat.dg/specs/abstract_private.ads17
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 8aa238f..3ffa651 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2008-08-18 Samuel Tardieu <sam@rfc1149.net>
+
+ PR ada/15808
+ * sem_ch6.adb (Check_Private_Overriding): Check for generic packages
+ as well.
+
2008-08-17 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
* adaint.c (_gnat_set_close_on_exec) [_WIN32]: Implement.
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index 1e84b26..d3faa0e 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 bd294ad..9eca6a0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-08-18 Samuel Tardieu <sam@rfc1149.net>
+
+ PR ada/15808
+ * gnat.dg/specs/abstract_private.ads: New.
+
2008-08-18 Richard Guenther <rguenther@suse.de>
* 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 0000000..7420a98
--- /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;