blob: fc5df1f298ea1b87aac0b91307e0b9e08d129a93 [file] [log] [blame]
! { dg-do compile }
!
! PR fortran/52469
!
! This was failing as the DECL of the proc pointer "func"
! was used for the interface of the proc-pointer component "my_f_ptr"
! rather than the decl of the proc-pointer target
!
! Contributed by palott@gmail.com
!
module ExampleFuncs
implicit none
! NOTE: "func" is a procedure pointer!
pointer :: func
interface
function func (z)
real :: func
real, intent (in) :: z
end function func
end interface
type Contains_f_ptr
procedure (func), pointer, nopass :: my_f_ptr
end type Contains_f_ptr
contains
function f1 (x)
real :: f1
real, intent (in) :: x
f1 = 2.0 * x
return
end function f1
function f2 (x)
real :: f2
real, intent (in) :: x
f2 = 3.0 * x**2
return
end function f2
function fancy (func, x)
real :: fancy
real, intent (in) :: x
interface AFunc
function func (y)
real :: func
real, intent (in) ::y
end function func
end interface AFunc
fancy = func (x) + 3.3 * x
end function fancy
end module ExampleFuncs
program test_proc_ptr
use ExampleFuncs
implicit none
type (Contains_f_ptr), dimension (2) :: NewType
!NewType(1) % my_f_ptr => f1
NewType(2) % my_f_ptr => f2
!write (*, *) NewType(1) % my_f_ptr (3.0), NewType(2) % my_f_ptr (3.0)
write (6, *) NewType(2) % my_f_ptr (3.0) ! < Shall print '27.0'
stop
end program test_proc_ptr