56 lines
1.2 KiB
Fortran
56 lines
1.2 KiB
Fortran
! { dg-do compile }
|
|
|
|
! Parsing of finalizer procedure definitions.
|
|
! Check parsing of valid finalizer definitions.
|
|
|
|
MODULE final_type
|
|
IMPLICIT NONE
|
|
|
|
TYPE :: mytype
|
|
INTEGER, ALLOCATABLE :: fooarr(:)
|
|
REAL :: foobar
|
|
CONTAINS
|
|
FINAL :: finalize_single
|
|
FINAL finalize_vector, finalize_matrix
|
|
! TODO: Test with different kind type parameters once they are implemented.
|
|
END TYPE mytype
|
|
|
|
CONTAINS
|
|
|
|
ELEMENTAL SUBROUTINE finalize_single (el)
|
|
IMPLICIT NONE
|
|
TYPE(mytype), INTENT(IN) :: el
|
|
! Do nothing in this test
|
|
END SUBROUTINE finalize_single
|
|
|
|
SUBROUTINE finalize_vector (el)
|
|
IMPLICIT NONE
|
|
TYPE(mytype), INTENT(INOUT) :: el(:)
|
|
! Do nothing in this test
|
|
END SUBROUTINE finalize_vector
|
|
|
|
SUBROUTINE finalize_matrix (el)
|
|
IMPLICIT NONE
|
|
TYPE(mytype) :: el(:, :)
|
|
! Do nothing in this test
|
|
END SUBROUTINE finalize_matrix
|
|
|
|
END MODULE final_type
|
|
|
|
PROGRAM finalizer
|
|
USE final_type, ONLY: mytype
|
|
IMPLICIT NONE
|
|
|
|
TYPE(mytype) :: el, vec(42)
|
|
TYPE(mytype), ALLOCATABLE :: mat(:, :)
|
|
|
|
ALLOCATE(mat(2, 3))
|
|
DEALLOCATE(mat)
|
|
|
|
END PROGRAM finalizer
|
|
|
|
! TODO: Remove this once finalization is implemented.
|
|
! { dg-excess-errors "not yet implemented" }
|
|
|
|
! { dg-final { cleanup-modules "final_type" } }
|