PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gfortran.dg / proc_ptr_comp_48.f90
blobde73b197ad8275044ebcb89fd9985b2253d83a57
1 ! { dg-do compile }
3 ! PR 80046: [F03] Explicit interface required: pointer argument
5 ! Contributed by Joachim Herb <joachim.herb@gmx.de>
7 program p
8 implicit none
10 type :: Node_t
11 procedure(NodeCloner), nopass, pointer :: cloneProc => NULL()
12 procedure(), nopass, pointer :: noIfc => NULL()
13 end type
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
23 type(Node_t) :: node
24 procedure(NodeCloner), pointer :: cloneNode
25 procedure(), pointer :: noIfc
27 cloneNode => node%noIfc ! { dg-error "Explicit interface required" }
28 node%noIfc => cloneNode ! { dg-error "Explicit interface required" }
30 noIfc => node%cloneProc ! { dg-error "Explicit interface required" }
31 node%cloneProc => noIfc ! { dg-error "Explicit interface required" }
33 node%cloneProc => node%noIfc ! { dg-error "Explicit interface required" }
34 node%noIfc => node%cloneProc ! { dg-error "Explicit interface required" }
36 ! the following cases are legal
38 node%noIfc => node%noIfc
39 node%cloneProc => node%cloneProc
41 cloneNode => node%cloneProc
42 node%cloneProc => cloneNode
44 noIfc => node%noIfc
45 node%noIfc => noIfc
47 end