49 lines
951 B
Fortran
49 lines
951 B
Fortran
! { dg-do run }
|
|
!
|
|
! PR 39630: [F03] Procedure Pointer Components with PASS
|
|
!
|
|
! found at http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/4a827e8ced6efb0f/884b9eca6d7e6742
|
|
|
|
module mymod
|
|
|
|
type :: mytype
|
|
integer :: i
|
|
procedure(set_int_value), pointer :: seti
|
|
end type
|
|
|
|
abstract interface
|
|
subroutine set_int_value(this,i)
|
|
import
|
|
class(mytype), intent(inout) :: this
|
|
integer, intent(in) :: i
|
|
end subroutine set_int_value
|
|
end interface
|
|
|
|
contains
|
|
|
|
subroutine seti_proc(this,i)
|
|
class(mytype), intent(inout) :: this
|
|
integer, intent(in) :: i
|
|
this%i=i
|
|
end subroutine seti_proc
|
|
|
|
end module mymod
|
|
|
|
program Test_03
|
|
use mymod
|
|
implicit none
|
|
|
|
type(mytype) :: m
|
|
|
|
m%i = 44
|
|
m%seti => seti_proc
|
|
|
|
call m%seti(6)
|
|
|
|
if (m%i/=6) call abort()
|
|
|
|
end program Test_03
|
|
|
|
! { dg-final { cleanup-modules "mymod" } }
|
|
|