1219888Sed! { dg-do compile }
2267123Semaste
3219888Sed! Parsing of finalizer procedure definitions.
4219888Sed! Check parsing of valid finalizer definitions.
5219888Sed
6219888SedMODULE final_type
7219888Sed  IMPLICIT NONE
8219888Sed
9219888Sed  TYPE :: mytype
10219888Sed    INTEGER, ALLOCATABLE :: fooarr(:)
11219888Sed    REAL :: foobar
12219888Sed  CONTAINS
13219888Sed    FINAL :: finalize_single
14219888Sed    FINAL finalize_vector, finalize_matrix
15219888Sed    ! TODO:  Test with different kind type parameters once they are implemented.
16219888Sed  END TYPE mytype
17219888Sed
18219888SedCONTAINS
19219888Sed
20219888Sed  ELEMENTAL SUBROUTINE finalize_single (el)
21219888Sed    IMPLICIT NONE
22219888Sed    TYPE(mytype), INTENT(IN) :: el
23219888Sed    ! Do nothing in this test
24219888Sed  END SUBROUTINE finalize_single
25219888Sed
26219888Sed  SUBROUTINE finalize_vector (el)
27219888Sed    IMPLICIT NONE
28219888Sed    TYPE(mytype), INTENT(INOUT) :: el(:)
29219888Sed    ! Do nothing in this test
30219888Sed  END SUBROUTINE finalize_vector
31219888Sed
32219888Sed  SUBROUTINE finalize_matrix (el)
33267035Semaste    IMPLICIT NONE
34267035Semaste    TYPE(mytype) :: el(:, :)
35219888Sed    ! Do nothing in this test
36219888Sed  END SUBROUTINE finalize_matrix
37219888Sed
38219888SedEND MODULE final_type
39219888Sed
40267301SemastePROGRAM finalizer
41219888Sed  USE final_type, ONLY: mytype
42219888Sed  IMPLICIT NONE
43219888Sed
44219888Sed  TYPE(mytype) :: el, vec(42)
45267011Semaste  TYPE(mytype), ALLOCATABLE :: mat(:, :)
46219888Sed
47259680Semaste  ALLOCATE(mat(2, 3))
48259680Semaste  DEALLOCATE(mat)
49267301Semaste
50259680SemasteEND PROGRAM finalizer
51267301Semaste