| ! RUN: %python %S/test_modfile.py %s %flang_fc1 |
| module m |
| type t1 |
| procedure(p1), pointer, nopass :: p |
| end type |
| type t2 |
| procedure(p2), pointer, nopass :: p |
| end type |
| type t3 |
| procedure(p4), pointer, nopass :: p |
| end type |
| type t4 |
| procedure(p6), pointer, nopass :: p |
| end type |
| type t5 |
| procedure(p7), pointer, nopass :: p |
| end type |
| interface |
| subroutine p1 |
| end |
| subroutine p2 |
| end |
| subroutine p3 |
| end |
| subroutine p4 |
| end |
| subroutine p5(c) |
| import |
| type(t3), intent(in) :: c |
| end |
| subroutine p6(d) |
| import |
| type(t5), intent(in) :: d |
| end |
| subroutine p7 |
| end |
| subroutine p8 |
| end |
| function f(a,b,dp) |
| import |
| type(t1), intent(in) :: a |
| type, extends(t2) :: localt1 |
| procedure(p3), pointer, nopass :: p |
| end type |
| type, extends(localt1) :: localt2 |
| contains |
| procedure, nopass :: p8 |
| end type |
| type(localt2), intent(in) :: b |
| procedure(p5) dp |
| type(t4), pointer :: f |
| end |
| end interface |
| end |
| |
| !Expect: m.mod |
| !module m |
| !type::t1 |
| !procedure(p1),nopass,pointer::p |
| !end type |
| !type::t2 |
| !procedure(p2),nopass,pointer::p |
| !end type |
| !type::t3 |
| !procedure(p4),nopass,pointer::p |
| !end type |
| !type::t4 |
| !procedure(p6),nopass,pointer::p |
| !end type |
| !type::t5 |
| !procedure(p7),nopass,pointer::p |
| !end type |
| !interface |
| !subroutine p1() |
| !end |
| !end interface |
| !interface |
| !subroutine p2() |
| !end |
| !end interface |
| !interface |
| !subroutine p3() |
| !end |
| !end interface |
| !interface |
| !subroutine p4() |
| !end |
| !end interface |
| !interface |
| !subroutine p5(c) |
| !import::t3 |
| !type(t3),intent(in)::c |
| !end |
| !end interface |
| !interface |
| !subroutine p6(d) |
| !import::t5 |
| !type(t5),intent(in)::d |
| !end |
| !end interface |
| !interface |
| !subroutine p7() |
| !end |
| !end interface |
| !interface |
| !subroutine p8() |
| !end |
| !end interface |
| !interface |
| !function f(a,b,dp) |
| !import::p3 |
| !import::p5 |
| !import::p8 |
| !import::t1 |
| !import::t2 |
| !import::t4 |
| !type(t1),intent(in)::a |
| !type,extends(t2)::localt1 |
| !procedure(p3),nopass,pointer::p |
| !end type |
| !type,extends(localt1)::localt2 |
| !contains |
| !procedure,nopass::p8 |
| !end type |
| !type(localt2),intent(in)::b |
| !procedure(p5)::dp |
| !type(t4),pointer::f |
| !end |
| !end interface |
| !end |