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<68>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
|