! { dg-do compile } ! Test the fix for PR59198, where the field for the component 'term' in ! the derived type 'decay_gen_t' was not being built. ! ! Contributed by Juergen Reuter ! module decays abstract interface function obs_unary_int () end function obs_unary_int end interface type, abstract :: any_config_t contains procedure (any_config_final), deferred :: final end type any_config_t type :: decay_term_t type(unstable_t), dimension(:), pointer :: unstable_product => null () end type decay_term_t type, abstract :: decay_gen_t type(decay_term_t), dimension(:), allocatable :: term procedure(obs_unary_int), nopass, pointer :: obs1_int => null () end type decay_gen_t type, extends (decay_gen_t) :: decay_root_t contains procedure :: final => decay_root_final end type decay_root_t type, abstract :: rng_t end type rng_t type, extends (decay_gen_t) :: decay_t class(rng_t), allocatable :: rng contains procedure :: final => decay_final end type decay_t type, extends (any_config_t) :: unstable_config_t contains procedure :: final => unstable_config_final end type unstable_config_t type :: unstable_t type(unstable_config_t), pointer :: config => null () type(decay_t), dimension(:), allocatable :: decay end type unstable_t interface subroutine any_config_final (object) import class(any_config_t), intent(inout) :: object end subroutine any_config_final end interface contains subroutine decay_root_final (object) class(decay_root_t), intent(inout) :: object end subroutine decay_root_final recursive subroutine decay_final (object) class(decay_t), intent(inout) :: object end subroutine decay_final recursive subroutine unstable_config_final (object) class(unstable_config_t), intent(inout) :: object end subroutine unstable_config_final end module decays