! { dg-do run } ! 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 Paul Thomas and based on the original testcase by ! Juergen Reuter ! module decays implicit none interface real elemental function iface (arg) real, intent(in) :: arg end function end interface type :: decay_term_t type(decay_t), pointer :: unstable_product integer :: i end type type :: decay_gen_t procedure(iface), nopass, pointer :: obs1_int type(decay_term_t), allocatable :: term end type type :: rng_t integer :: i end type type, extends (decay_gen_t) :: decay_t class(rng_t), allocatable :: rng end type class(decay_t), allocatable :: object end use decays type(decay_t), pointer :: template real, parameter :: arg = 1.570796327 allocate (template) allocate (template%rng) template%obs1_int => cos if (abs (template%obs1_int (arg) - cos (arg)) .gt. 1e-4) STOP 1 allocate (object, source = template) if (abs (object%obs1_int (arg) - cos (arg)) .gt. 1e-4) STOP 2 end