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) call abort
28    CALL putaline("xx")
29    if (check .ne. 2) call abort
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) call abort
46    call putaline(rcheck)
47    if (rcheck .ne. 4.0) call abort
48  end subroutine s4
49END MODULE
50
51  USE M2
52  CALL S3
53  call S4
54END
55