! { dg-do run } ! Tests the fix for PR35959, in which the structure subpattern was declared static ! so that this test faied on the second recursive call. ! ! Contributed by Michaël Baudin ! program testprog type :: t_type integer, dimension(:), allocatable :: chars end type t_type integer, save :: callnb = 0 type(t_type) :: this allocate ( this % chars ( 4)) if (.not.recursivefunc (this) .or. (callnb .ne. 10)) call abort () contains recursive function recursivefunc ( this ) result ( match ) type(t_type), intent(in) :: this type(t_type) :: subpattern logical :: match callnb = callnb + 1 match = (callnb == 10) if ((.NOT. allocated (this % chars)) .OR. match) return allocate ( subpattern % chars ( 4 ) ) match = recursivefunc ( subpattern ) end function recursivefunc end program testprog