| ! RUN: %python %S/test_modfile.py %s %flang_fc1 |
| ! Ensure that symbols and types needed to declare procedures and procedure pointers |
| ! are properly imported into interfaces. |
| module m |
| type :: t |
| end type |
| abstract interface |
| subroutine iface |
| end |
| end interface |
| procedure(iface) :: ext |
| interface |
| subroutine subr(p1,p2) |
| import ext, t |
| procedure(ext) :: p1 |
| procedure(type(t)), pointer :: p2 |
| end subroutine |
| function fun() result(res) |
| import subr |
| procedure(subr), pointer :: res |
| end function |
| end interface |
| end module |
| |
| !Expect: m.mod |
| !module m |
| !type::t |
| !end type |
| !abstract interface |
| !subroutine iface() |
| !end |
| !end interface |
| !procedure(iface)::ext |
| !interface |
| !subroutine subr(p1,p2) |
| !import::ext |
| !import::t |
| !procedure(ext)::p1 |
| !procedure(type(t)),pointer::p2 |
| !end |
| !end interface |
| !interface |
| !function fun() result(res) |
| !import::subr |
| !procedure(subr),pointer::res |
| !end |
| !end interface |
| !end |