From 71c22dfb6fe9dd3ce5e30e773db3fd35ad7ac061 Mon Sep 17 00:00:00 2001 From: burnus Date: Thu, 24 Jun 2010 07:51:22 +0000 Subject: [PATCH] 2010-06-24 Tobias Burnus PR fortran/44614 * decl.c (variable_decl): Fix IMPORT diagnostic for CLASS. 2010-06-24 Tobias Burnus PR fortran/44614 * gfortran.dg/import8.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@161310 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/decl.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/import8.f90 | 18 ++++++++++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/import8.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 07a5825123b..e887e6f7491 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2010-06-24 Tobias Burnus + + PR fortran/44614 + * decl.c (variable_decl): Fix IMPORT diagnostic for CLASS. + 2010-06-22 Janus Weil PR fortran/44616 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index f7f48002d3f..aa7a2668fce 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1764,7 +1764,7 @@ variable_decl (int elem) specified in the procedure definition, except that the interface may specify a procedure that is not pure if the procedure is defined to be pure(12.3.2). */ - if (current_ts.type == BT_DERIVED + if ((current_ts.type == BT_DERIVED || current_ts.type == BT_CLASS) && gfc_current_ns->proc_name && gfc_current_ns->proc_name->attr.if_source == IFSRC_IFBODY && current_ts.u.derived->ns != gfc_current_ns) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ffc1ce9feac..2dbff36f6f3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-06-24 Tobias Burnus + + PR fortran/44614 + * gfortran.dg/import8.f90: New. + 2010-06-23 Arnaud Charlet * gnat.dg/not_null.adb: Update test case. diff --git a/gcc/testsuite/gfortran.dg/import8.f90 b/gcc/testsuite/gfortran.dg/import8.f90 new file mode 100644 index 00000000000..0d88e625b81 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/import8.f90 @@ -0,0 +1,18 @@ +! { dg-do compile } +! +! PR fortran/44614 +! +! + +implicit none + +type, abstract :: Connection +end type Connection + +abstract interface + subroutine generic_desc(self) + ! <<< missing IMPORT + class(Connection) :: self ! { dg-error "has not been declared within the interface" } + end subroutine generic_desc +end interface +end -- 2.11.0