27 lines
875 B
Fortran
27 lines
875 B
Fortran
! { 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 <michael.baudin@gmail.com>
|
|
!
|
|
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
|