aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2013-05-28 20:30:03 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2013-05-28 20:30:03 +0200
commit6d2bee95d82dcf40d115a3ba3a793a9b71a17a64 (patch)
treef824b075b5ea79e41e049837b2d617971b19e54c
parentb49eefa5747d53788ac33f34fa1d034acd21668e (diff)
downloadgcc-6d2bee95d82dcf40d115a3ba3a793a9b71a17a64.zip
gcc-6d2bee95d82dcf40d115a3ba3a793a9b71a17a64.tar.gz
gcc-6d2bee95d82dcf40d115a3ba3a793a9b71a17a64.tar.bz2
re PR fortran/37336 ([F03] Finish derived-type finalization)
2013-05-28 Tobias Burnus <burnus@net-b.de> PR fortran/37336 * resolve.c (gfc_resolve_finalizers): Remove not implemented * error. 2013-05-28 Tobias Burnus <burnus@net-b.de> PR fortran/37336 * gfortran.dg/finalize_11.f90: New. * gfortran.dg/finalize_4.f03: Remove dg-error. * gfortran.dg/finalize_5.f03: Ditto. * gfortran.dg/finalize_6.f03: Ditto. * gfortran.dg/finalize_7.f03: Ditto. From-SVN: r199388
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/resolve.c4
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/gfortran.dg/finalize_11.f9031
-rw-r--r--gcc/testsuite/gfortran.dg/finalize_4.f033
-rw-r--r--gcc/testsuite/gfortran.dg/finalize_5.f033
-rw-r--r--gcc/testsuite/gfortran.dg/finalize_6.f909
-rw-r--r--gcc/testsuite/gfortran.dg/finalize_7.f033
8 files changed, 48 insertions, 19 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b9a4a69..326a01f 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,10 @@
2013-05-28 Tobias Burnus <burnus@net-b.de>
+ PR fortran/37336
+ * resolve.c (gfc_resolve_finalizers): Remove not implemented error.
+
+2013-05-28 Tobias Burnus <burnus@net-b.de>
+
* trans-expr.c (gfc_conv_procedure_call): Deallocate
polymorphic arrays for allocatable intent(out) dummies.
(gfc_reset_vptr): New function, moved from trans-stmt.c
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 78a1038..4cfc858 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -11241,10 +11241,6 @@ error:
" defined at %L, suggest also scalar one",
derived->name, &derived->declared_at);
- /* TODO: Remove this error when finalization is finished. */
- gfc_error ("Finalization at %L is not yet implemented",
- &derived->declared_at);
-
gfc_find_derived_vtab (derived);
return result;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fa8802e..cbf3d32 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,14 @@
2013-05-28 Tobias Burnus <burnus@net-b.de>
+ PR fortran/37336
+ * gfortran.dg/finalize_11.f90: New.
+ * gfortran.dg/finalize_4.f03: Remove dg-error.
+ * gfortran.dg/finalize_5.f03: Ditto.
+ * gfortran.dg/finalize_6.f03: Ditto.
+ * gfortran.dg/finalize_7.f03: Ditto.
+
+2013-05-28 Tobias Burnus <burnus@net-b.de>
+
* gfortran.dg/class_array_16.f90: New.
2013-05-28 Tobias Burnus <burnus@net-b.de>
diff --git a/gcc/testsuite/gfortran.dg/finalize_11.f90 b/gcc/testsuite/gfortran.dg/finalize_11.f90
new file mode 100644
index 0000000..e9bb814
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/finalize_11.f90
@@ -0,0 +1,31 @@
+! { dg-do compile }
+! { dg-options "-std=f2003" }
+!
+! Copied from finalize_6.f90 - was before rejected as the finalization
+! wrapper uses TS29913 (-std=f2008ts) features.
+!
+
+MODULE final_type
+ IMPLICIT NONE
+
+ TYPE :: mytype
+ INTEGER :: fooarr(42)
+ REAL :: foobar
+ CONTAINS
+ FINAL :: finalize_single
+ END TYPE mytype
+
+CONTAINS
+
+ SUBROUTINE finalize_single (el)
+ IMPLICIT NONE
+ TYPE(mytype) :: el
+ ! Do nothing in this test
+ END SUBROUTINE finalize_single
+
+END MODULE final_type
+
+PROGRAM finalizer
+ IMPLICIT NONE
+ ! Do nothing
+END PROGRAM finalizer
diff --git a/gcc/testsuite/gfortran.dg/finalize_4.f03 b/gcc/testsuite/gfortran.dg/finalize_4.f03
index 11e094f..b4c08f2 100644
--- a/gcc/testsuite/gfortran.dg/finalize_4.f03
+++ b/gcc/testsuite/gfortran.dg/finalize_4.f03
@@ -48,6 +48,3 @@ PROGRAM finalizer
DEALLOCATE(mat)
END PROGRAM finalizer
-
-! TODO: Remove this once finalization is implemented.
-! { dg-excess-errors "not yet implemented" }
diff --git a/gcc/testsuite/gfortran.dg/finalize_5.f03 b/gcc/testsuite/gfortran.dg/finalize_5.f03
index b9ec376..fb81531 100644
--- a/gcc/testsuite/gfortran.dg/finalize_5.f03
+++ b/gcc/testsuite/gfortran.dg/finalize_5.f03
@@ -107,6 +107,3 @@ PROGRAM finalizer
IMPLICIT NONE
! Nothing here, errors above
END PROGRAM finalizer
-
-! TODO: Remove this once finalization is implemented.
-! { dg-excess-errors "not yet implemented" }
diff --git a/gcc/testsuite/gfortran.dg/finalize_6.f90 b/gcc/testsuite/gfortran.dg/finalize_6.f90
index 82d662f..d155c7b 100644
--- a/gcc/testsuite/gfortran.dg/finalize_6.f90
+++ b/gcc/testsuite/gfortran.dg/finalize_6.f90
@@ -10,9 +10,9 @@ MODULE final_type
TYPE :: mytype
INTEGER :: fooarr(42)
REAL :: foobar
- CONTAINS ! { dg-error "Fortran 2003" }
- FINAL :: finalize_single ! { dg-error "Fortran 2003" }
- END TYPE mytype
+ CONTAINS ! { dg-error "Fortran 2003: CONTAINS block in derived type definition" }
+ FINAL :: finalize_single ! { dg-error "Fortran 2003: FINAL procedure declaration|FINAL procedure 'finalize_single' at .1. is not a SUBROUTINE" }
+ END TYPE mytype ! { dg-error "Fortran 2008: Derived type definition at .1. with empty CONTAINS section" }
CONTAINS
@@ -28,6 +28,3 @@ PROGRAM finalizer
IMPLICIT NONE
! Do nothing
END PROGRAM finalizer
-
-! TODO: Remove this once finalization is implemented.
-! { dg-excess-errors "not yet implemented" }
diff --git a/gcc/testsuite/gfortran.dg/finalize_7.f03 b/gcc/testsuite/gfortran.dg/finalize_7.f03
index 6ca4f55..5807ed5 100644
--- a/gcc/testsuite/gfortran.dg/finalize_7.f03
+++ b/gcc/testsuite/gfortran.dg/finalize_7.f03
@@ -52,6 +52,3 @@ PROGRAM finalizer
IMPLICIT NONE
! Nothing here
END PROGRAM finalizer
-
-! TODO: Remove this once finalization is implemented.
-! { dg-excess-errors "not yet implemented" }