! { dg-do compile } ! { dg-options "-fcheck=all" } ! ! PR fortran/57542 ! ! Contributed by Salvatore Filippone ! module type_mod type inner end type inner type outer class(inner), allocatable :: item end type outer type container class(outer), allocatable :: item end type container type maintype type(container), allocatable :: v(:) end type maintype end module type_mod subroutine testfinal(var) use type_mod type(maintype), intent(inout) :: var ! A real code would obviously check ! this is really allocated deallocate(var%v(1)%item%item) end subroutine testfinal