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