! { dg-do compile } ! ! PR fortran/37445, in which the contained 'putaline' would be ! ignored and no specific interface found in the generic version. ! ! Contributed by Norman S Clerman < clerman@fuse.net> ! MODULE M1 INTERFACE putaline MODULE PROCEDURE S1,S2 END INTERFACE CONTAINS SUBROUTINE S1(I) i = 3 END SUBROUTINE SUBROUTINE S2(F) f = 4.0 END SUBROUTINE END MODULE MODULE M2 USE M1 CONTAINS SUBROUTINE S3 integer :: check = 0 CALL putaline() if (check .ne. 1) call abort CALL putaline("xx") if (check .ne. 2) call abort ! CALL putaline(1.0) ! => this now causes an error, as it should CONTAINS SUBROUTINE putaline(x) character, optional :: x if (present(x)) then check = 2 else check = 1 end if END SUBROUTINE END SUBROUTINE subroutine S4 integer :: check = 0 REAL :: rcheck = 0.0 call putaline(check) if (check .ne. 3) call abort call putaline(rcheck) if (rcheck .ne. 4.0) call abort end subroutine s4 END MODULE USE M2 CALL S3 call S4 END