1! { dg-do compile }
2!
3! PR fortran/37445, in which the contained 'putaline' would be
4! ignored and no specific interface found in the generic version.
5!
6! Contributed by Norman S Clerman < clerman@fuse.net>
7!
8MODULE M1
9  INTERFACE putaline
10    MODULE PROCEDURE S1,S2
11  END INTERFACE
12CONTAINS
13  SUBROUTINE S1(I)
14      i = 3
15  END SUBROUTINE
16  SUBROUTINE S2(F)
17      f = 4.0
18  END SUBROUTINE
19END MODULE
20
21MODULE M2
22  USE M1
23CONTAINS
24  SUBROUTINE S3
25    integer :: check = 0
26    CALL putaline()
27    if (check .ne. 1) STOP 1
28    CALL putaline("xx")
29    if (check .ne. 2) STOP 2
30!  CALL putaline(1.0) ! => this now causes an error, as it should
31  CONTAINS
32    SUBROUTINE putaline(x)
33      character, optional :: x
34      if (present(x)) then
35        check = 2
36      else
37        check = 1
38      end if
39    END SUBROUTINE
40  END SUBROUTINE
41  subroutine S4
42    integer :: check = 0
43    REAL :: rcheck = 0.0
44    call putaline(check)
45    if (check .ne. 3) STOP 3
46    call putaline(rcheck)
47    if (rcheck .ne. 4.0) STOP 4
48  end subroutine s4
49END MODULE
50
51  USE M2
52  CALL S3
53  call S4
54END
55