! { dg-do compile } ! ! TS 29113 ! 6.2 Explicit interface ! ! Additionally to the rules of subclause 12.4.2.2 of ISO/IEC 1539-1:2010, ! a procedure shall have an explicit interface if it has a dummy argument ! that is assumed-rank. ! ! NOTE 6.1 ! An explicit interface is also required for a procedure if it has a ! dummy argument that is assumed-type because an assumed-type dummy ! argument is polymorphic. ! ! This file contains code that is expected to produce errors. module m1 interface subroutine s1 (a) integer :: a(..) end subroutine subroutine s2 (b) type(*) :: b end subroutine end interface end module module m2 contains ! This subroutine has an explicit interface, and so do the things ! it calls. subroutine good (a, b) use m1 integer :: a(..) type (*) :: b call s1 (a) call s2 (b) end subroutine ! This subroutine has an explicit interface, but the things it calls don't. subroutine bad (a, b) use m1 integer :: a(..) type (*) :: b external :: s3, s4 call s3 (a) ! { dg-error "Assumed-rank argument" } call s4 (b) ! { dg-error "Assumed-type argument" } end subroutine end module