1! { dg-do compile } 2! 3! PR 80046: [F03] Explicit interface required: pointer argument 4! 5! Contributed by Joachim Herb <joachim.herb@gmx.de> 6 7program p 8 implicit none 9 10 type :: Node_t 11 procedure(NodeCloner), nopass, pointer :: cloneProc => NULL() 12 procedure(), nopass, pointer :: noIfc => NULL() 13 end type 14 15 interface 16 subroutine NodeCloner( tgt, src ) 17 import Node_t 18 type(Node_t), pointer, intent(out) :: tgt 19 type(Node_t), intent(in) :: src 20 end subroutine 21 end interface 22 23 type(Node_t) :: node 24 procedure(NodeCloner), pointer :: cloneNode 25 procedure(), pointer :: noIfc 26 27 cloneNode => node%noIfc ! { dg-error "Explicit interface required" } 28 node%noIfc => cloneNode ! { dg-error "Explicit interface required" } 29 30 noIfc => node%cloneProc ! { dg-error "Explicit interface required" } 31 node%cloneProc => noIfc ! { dg-error "Explicit interface required" } 32 33 node%cloneProc => node%noIfc ! { dg-error "Explicit interface required" } 34 node%noIfc => node%cloneProc ! { dg-error "Explicit interface required" } 35 36 ! the following cases are legal 37 38 node%noIfc => node%noIfc 39 node%cloneProc => node%cloneProc 40 41 cloneNode => node%cloneProc 42 node%cloneProc => cloneNode 43 44 noIfc => node%noIfc 45 node%noIfc => noIfc 46 47end 48