blob: de73b197ad8275044ebcb89fd9985b2253d83a57 [file] [log] [blame]
! { dg-do compile }
!
! PR 80046: [F03] Explicit interface required: pointer argument
!
! Contributed by Joachim Herb <joachim.herb@gmx.de>
program p
implicit none
type :: Node_t
procedure(NodeCloner), nopass, pointer :: cloneProc => NULL()
procedure(), nopass, pointer :: noIfc => NULL()
end type
interface
subroutine NodeCloner( tgt, src )
import Node_t
type(Node_t), pointer, intent(out) :: tgt
type(Node_t), intent(in) :: src
end subroutine
end interface
type(Node_t) :: node
procedure(NodeCloner), pointer :: cloneNode
procedure(), pointer :: noIfc
cloneNode => node%noIfc ! { dg-error "Explicit interface required" }
node%noIfc => cloneNode ! { dg-error "Explicit interface required" }
noIfc => node%cloneProc ! { dg-error "Explicit interface required" }
node%cloneProc => noIfc ! { dg-error "Explicit interface required" }
node%cloneProc => node%noIfc ! { dg-error "Explicit interface required" }
node%noIfc => node%cloneProc ! { dg-error "Explicit interface required" }
! the following cases are legal
node%noIfc => node%noIfc
node%cloneProc => node%cloneProc
cloneNode => node%cloneProc
node%cloneProc => cloneNode
noIfc => node%noIfc
node%noIfc => noIfc
end