Code:
MODULE m TYPE t(k) INTEGER, KIND :: k REAL(k),POINTER :: vector(:) => NULL() CONTAINS FINAL :: finalize_t1s, finalize_t1v, finalize_t2e END TYPE CONTAINS SUBROUTINE finalize_t1s(x) TYPE(t(KIND(0.0))) x IF (ASSOCIATED(x%vector)) DEALLOCATE(x%vector) END SUBROUTINE SUBROUTINE finalize_t1v(x)