48 lines
1.0 KiB
Fortran
48 lines
1.0 KiB
Fortran
! Related to PR 15326. Try calling string functions whose lengths depend
|
|
! on a dummy procedure.
|
|
! { dg-do run }
|
|
integer pure function double (x)
|
|
integer, intent (in) :: x
|
|
double = x * 2
|
|
end function double
|
|
|
|
program main
|
|
implicit none
|
|
|
|
interface
|
|
integer pure function double (x)
|
|
integer, intent (in) :: x
|
|
end function double
|
|
end interface
|
|
|
|
call test (f1 (double, 100), 200)
|
|
|
|
call indirect (double)
|
|
contains
|
|
function f1 (fn, i)
|
|
integer :: i
|
|
interface
|
|
integer pure function fn (x)
|
|
integer, intent (in) :: x
|
|
end function fn
|
|
end interface
|
|
character (len = fn (i)) :: f1
|
|
f1 = ''
|
|
end function f1
|
|
|
|
subroutine indirect (fn)
|
|
interface
|
|
integer pure function fn (x)
|
|
integer, intent (in) :: x
|
|
end function fn
|
|
end interface
|
|
call test (f1 (fn, 100), 200)
|
|
end subroutine indirect
|
|
|
|
subroutine test (string, length)
|
|
character (len = *) :: string
|
|
integer, intent (in) :: length
|
|
if (len (string) .ne. length) call abort
|
|
end subroutine test
|
|
end program main
|