1! { dg-do compile }
2
3! Parsing of finalizer procedure definitions.
4! Check that FINAL-declarations are only allowed on types defined in the
5! specification part of a module.
6
7MODULE final_type
8  IMPLICIT NONE
9
10CONTAINS
11
12  SUBROUTINE bar
13    IMPLICIT NONE
14
15    TYPE :: mytype
16      INTEGER, ALLOCATABLE :: fooarr(:)
17      REAL :: foobar
18    CONTAINS
19      FINAL :: myfinal ! { dg-error "in the specification part of a MODULE" }
20    END TYPE mytype
21
22  CONTAINS
23
24    SUBROUTINE myfinal (el)
25      TYPE(mytype) :: el
26    END SUBROUTINE myfinal
27
28  END SUBROUTINE bar
29
30END MODULE final_type
31
32PROGRAM finalizer
33  IMPLICIT NONE
34  ! Do nothing here
35END PROGRAM finalizer
36