diff options
author | sam <sam@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-04-13 18:15:20 +0000 |
---|---|---|
committer | sam <sam@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-04-13 18:15:20 +0000 |
commit | 5207e7191fb89a5bc8f1a710d6a0be83bfb890ca (patch) | |
tree | c4b975b66545fd016e2b72fc1d429e06e87136df | |
parent | c2f0327042399b100d792f828204e32afe4b78a4 (diff) | |
download | gcc-5207e7191fb89a5bc8f1a710d6a0be83bfb890ca.tar.gz |
gcc/ada/
PR ada/17985
* sem_aggr.adb (Valid_Ancestor_Type): A type is not an ancestor of
itself.
gcc/testsuite/
PR ada/17985
* gnat.dg/ancestor_type.ads, gnat.dg/ancestor_type.adb: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@134244 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ada/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/sem_aggr.adb | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/ancestor_type.adb | 13 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/ancestor_type.ads | 13 |
5 files changed, 40 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index b6f61398b40..75314119fc6 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2008-04-13 Samuel Tardieu <sam@rfc1149.net> + + PR ada/17985 + * sem_aggr.adb (Valid_Ancestor_Type): A type is not an ancestor of + itself. + 2008-04-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> * sfn_scan.adb, sfn_scan.ads, sinfo.ads, diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb index f930ecbf14c..5c7d9bd7dda 100644 --- a/gcc/ada/sem_aggr.adb +++ b/gcc/ada/sem_aggr.adb @@ -2159,7 +2159,9 @@ package body Sem_Aggr is Imm_Type := Etype (Base_Type (Imm_Type)); end loop; - if Etype (Imm_Type) /= Base_Type (A_Type) then + if Etype (Imm_Type) /= Base_Type (A_Type) + or else Base_Type (Typ) = Base_Type (A_Type) + then Error_Msg_NE ("expect ancestor type of &", A, Typ); return False; else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4c4feb17755..6932bedb8f4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-04-13 Samuel Tardieu <sam@rfc1149.net> + + PR ada/17985 + * gnat.dg/ancestor_type.ads, gnat.dg/ancestor_type.adb: New test. + 2008-04-12 Andrew Pinski <pinskia@gmail.com> * gcc.target/powerpc/darwin-save-world-1.c: New test. diff --git a/gcc/testsuite/gnat.dg/ancestor_type.adb b/gcc/testsuite/gnat.dg/ancestor_type.adb new file mode 100644 index 00000000000..b5e9e2c5c1d --- /dev/null +++ b/gcc/testsuite/gnat.dg/ancestor_type.adb @@ -0,0 +1,13 @@ +-- { dg-do compile } + +package body Ancestor_Type is + + package body B is + function make return T is + begin + return (T with n => 0); -- { dg-error "expect ancestor" } + end make; + + end B; + +end Ancestor_Type; diff --git a/gcc/testsuite/gnat.dg/ancestor_type.ads b/gcc/testsuite/gnat.dg/ancestor_type.ads new file mode 100644 index 00000000000..2ed1f19c2c8 --- /dev/null +++ b/gcc/testsuite/gnat.dg/ancestor_type.ads @@ -0,0 +1,13 @@ +package Ancestor_Type is + + type T is tagged private; + + package B is + function make return T; + end B; + +private + type T is tagged record + n: Natural; + end record; +end Ancestor_Type; |