! { dg-do compile } ! ! PR 80046: [F03] Explicit interface required: pointer argument ! ! Contributed by Joachim Herb 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