1! { dg-do compile }
2!
3! PR 36947: Attributes not fully checked comparing actual vs dummy procedure
4!
5! Contributed by Tobias Burnus <burnus@net-b.de>
6
7module m
8interface foo
9  module procedure one, two
10end interface foo
11contains
12subroutine one(op,op2)
13    interface
14      subroutine op(x, y)
15        complex, intent(in)  :: x(:)
16        complex, intent(out) :: y(:)
17      end subroutine op
18      subroutine op2(x, y)
19        complex, intent(in)  :: x(:)
20        complex, intent(out) :: y(:)
21      end subroutine op2
22    end interface
23end subroutine one
24subroutine two(ops,i,j)
25    interface
26      subroutine op(x, y)
27        complex, intent(in)  :: x(:)
28        complex, intent(out) :: y(:)
29      end subroutine op
30    end interface
31    real :: i,j
32end subroutine two
33end module m
34
35module test
36contains
37subroutine bar()
38  use m
39  call foo(precond_prop,prop2)
40end subroutine bar
41  subroutine precond_prop(x, y)
42    complex, intent(in)  :: x(:)
43    complex, intent(out) :: y(:)
44  end subroutine
45  subroutine prop2(x, y)
46    complex, intent(in)  :: x(:)
47    complex, intent(out) :: y(:)
48  end subroutine
49end module test
50