1! { dg-do compile } 2! 3! PR 63674: [F03] procedure pointer and non/pure procedure 4! 5! Contributed by Valery Weber <valeryweber@hotmail.com> 6 7program prog 8 interface 9 integer function nf() 10 end function 11 pure integer function pf() 12 end function 13 subroutine ns() 14 end subroutine 15 pure subroutine ps() 16 end subroutine 17 end interface 18 type :: t 19 procedure(nf), nopass, pointer :: nf => NULL() ! non-pure function 20 procedure(pf), nopass, pointer :: pf => NULL() ! pure function 21 procedure(ns), nopass, pointer :: ns => NULL() ! non-pure subroutine 22 procedure(ps), nopass, pointer :: ps => NULL() ! pure subroutine 23 end type 24contains 25 pure integer function eval(a) 26 type(t), intent(in) :: a 27 eval = a%pf() 28 eval = a%nf() ! { dg-error "Reference to impure function" } 29 call a%ps() 30 call a%ns() ! { dg-error "is not PURE" } 31 end function 32end 33