! { dg-do compile } ! ! Check the fix for PR70031, where the 'module' prefix had to preceed ! 'function/subroutine' in the interface (or in the CONTAINS section. ! ! As reported by "Bulova" on ! https://groups.google.com/forum/#!topic/comp.lang.fortran/hE8LkVMhghQ ! module test Interface Module Recursive Subroutine sub1 (x) Integer, Intent (InOut) :: x End Subroutine sub1 module recursive function fcn1 (x) result(res) integer, intent (inout) :: x integer :: res end function End Interface end module test submodule(test) testson integer :: n = 10 contains Module Procedure sub1 If (x < n) Then x = x + 1 Call sub1 (x) End If End Procedure sub1 recursive module function fcn1 (x) result(res) integer, intent (inout) :: x integer :: res res = x - 1 if (x > 0) then x = fcn1 (res) else res = x end if end function end submodule testson use test integer :: x = 5 call sub1(x) if (x .ne. 10) call abort x = 10 if (fcn1 (x) .ne. 0) call abort end ! { dg-final { cleanup-submodules "test@testson" } }