| ! RUN: %python %S/test_modfile.py %s %flang_fc1 |
| module m1 |
| type foo |
| integer :: c1 = 123 |
| end type |
| end |
| |
| module m2 |
| use m1, only: foo |
| type baz |
| type(foo) :: d = foo() |
| end type |
| type bar |
| type(baz) :: e = baz() |
| end type |
| end |
| |
| module m3 |
| use m1, only: m1foo => foo |
| type foo |
| type(m1foo), private :: c2 = m1foo() |
| end type |
| end |
| |
| module m4 |
| use m2, only: m3foo => foo |
| type foo |
| type(m3foo), private :: c3 = m3foo() |
| end type |
| end |
| |
| module m5 |
| use m2, only: m2bar => bar |
| use m4, only: foo |
| type blah |
| type(m2bar) :: f = m2bar() |
| end type |
| end |
| |
| !Expect: m1.mod |
| !module m1 |
| !type::foo |
| !integer(4)::c1=123_4 |
| !end type |
| !end |
| |
| !Expect: m2.mod |
| !module m2 |
| !use m1,only:foo |
| !type::baz |
| !type(foo)::d=foo(c1=123_4) |
| !end type |
| !type::bar |
| !type(baz)::e=baz(d=foo(c1=123_4)) |
| !end type |
| !end |
| |
| !Expect: m3.mod |
| !module m3 |
| !use m1,only:m1foo=>foo |
| !type::foo |
| !type(m1foo),private::c2=m1foo(c1=123_4) |
| !end type |
| !end |
| |
| !Expect: m4.mod |
| !module m4 |
| !use m2,only:m3foo=>foo |
| !type::foo |
| !type(m3foo),private::c3=m3foo(c1=123_4) |
| !end type |
| !end |
| |
| !Expect: m5.mod |
| !module m5 |
| !use m2,only:m2$foo=>foo |
| !use m2,only:baz |
| !use m2,only:m2bar=>bar |
| !use m4,only:foo |
| !private::m2$foo |
| !private::baz |
| !type::blah |
| !type(m2bar)::f=m2bar(e=baz(d=m2$foo(c1=123_4))) |
| !end type |
| !end |