! { 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