| ! RUN: %python %S/test_modfile.py %s %flang_fc1 |
| ! Ensure that interfaces, which are internal to procedures and are used to |
| ! define the interface of dummy or return value procedures, are included in |
| ! .mod files. |
| module m |
| implicit none |
| contains |
| function f(x) |
| real, intent(in) :: x |
| abstract interface |
| subroutine used_int(x, p) |
| implicit none |
| real, intent(out) :: x |
| interface |
| subroutine inner_int(x) |
| implicit none |
| real, intent(out) :: x |
| end subroutine inner_int |
| end interface |
| procedure(inner_int) :: p |
| end subroutine used_int |
| |
| pure logical function unused_int(i) |
| implicit none |
| integer, intent(in) :: i |
| end function unused_int |
| end interface |
| procedure(used_int), pointer :: f |
| |
| f => null() |
| contains |
| subroutine internal() |
| end subroutine internal |
| end function f |
| end module m |
| |
| !Expect: m.mod |
| !module m |
| !contains |
| !function f(x) |
| !real(4),intent(in)::x |
| !abstract interface |
| !subroutine used_int(x,p) |
| !real(4),intent(out)::x |
| !interface |
| !subroutine inner_int(x) |
| !real(4),intent(out)::x |
| !end |
| !end interface |
| !procedure(inner_int)::p |
| !end |
| !end interface |
| !procedure(used_int),pointer::f |
| !end |
| !end |