diff options
author | Samuel Tardieu <sam@rfc1149.net> | 2009-10-06 07:19:54 +0000 |
---|---|---|
committer | Samuel Tardieu <sam@gcc.gnu.org> | 2009-10-06 07:19:54 +0000 |
commit | 6fa30ef2813f3d16e1c7fb97f91cebfb14b8efb0 (patch) | |
tree | 70a0cfd4f9886786f8c4308b903472c7aed42a67 | |
parent | ddd4d0e1ade18e71ea3d111d5a2337dfa52dcc7a (diff) | |
download | gcc-6fa30ef2813f3d16e1c7fb97f91cebfb14b8efb0.zip gcc-6fa30ef2813f3d16e1c7fb97f91cebfb14b8efb0.tar.gz gcc-6fa30ef2813f3d16e1c7fb97f91cebfb14b8efb0.tar.bz2 |
re PR ada/38333 (Illegal program not detected, ARM 6.1(20): pragma Import illegal for abstract subprograms)
gcc/ada/
PR ada/38333
* sem_prag.adb (Process_Import_Or_Interface): Forbid an abstract
subprogram to be completed with a "pragma Import".
gcc/testsuite/
PR ada/38333
* gnat.dg/specs/import_abstract.ads: New.
From-SVN: r152486
-rw-r--r-- | gcc/ada/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/sem_prag.adb | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/specs/import_abstract.ads | 6 |
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 6520a7f..7af8f31 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2009-10-06 Samuel Tardieu <sam@rfc1149.net> + + PR ada/38333 + * sem_prag.adb (Process_Import_Or_Interface): Forbid an abstract + subprogram to be completed with a "pragma Import". + 2009-10-02 Eric Botcazou <ebotcazou@adacore.com> * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 902cb30..4d56d36 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -3459,6 +3459,15 @@ package body Sem_Prag is else Set_Imported (Def_Id); + if Is_Subprogram (Def_Id) + and then Is_Abstract_Subprogram (Def_Id) + then + Error_Msg_Sloc := Sloc (Def_Id); + Error_Msg_NE + ("cannot import abstract subprogram& declared#", + Arg2, Def_Id); + end if; + -- Special processing for Convention_Intrinsic if C = Convention_Intrinsic then diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 13fbf3d..c65aab8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-10-06 Samuel Tardieu <sam@rfc1149.net> + + PR ada/38333 + * gnat.dg/specs/import_abstract.ads: New. + 2009-10-05 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/35862 diff --git a/gcc/testsuite/gnat.dg/specs/import_abstract.ads b/gcc/testsuite/gnat.dg/specs/import_abstract.ads new file mode 100644 index 0000000..9d05f0c --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/import_abstract.ads @@ -0,0 +1,6 @@ +-- { dg-do compile } +package Import_Abstract is + type T1 is abstract tagged null record; + procedure p1(X : T1) is abstract; + pragma Import (Ada, p1); -- { dg-error "cannot import abstract subprogram" } +end Import_Abstract; |