xref: /llvm-project/flang/test/Semantics/modfile61.f90 (revision d0708e6285b88510649722fe8e6832ee1d7abfb1)
1! RUN: %python %S/test_modfile.py %s %flang_fc1
2module m
3  type t1
4    procedure(p1), pointer, nopass :: p
5  end type
6  type t2
7    procedure(p2), pointer, nopass :: p
8  end type
9  type t3
10    procedure(p4), pointer, nopass :: p
11  end type
12  type t4
13    procedure(p6), pointer, nopass :: p
14  end type
15  type t5
16    procedure(p7), pointer, nopass :: p
17  end type
18  interface
19    subroutine p1
20    end
21    subroutine p2
22    end
23    subroutine p3
24    end
25    subroutine p4
26    end
27    subroutine p5(c)
28      import
29      type(t3), intent(in) :: c
30    end
31    subroutine p6(d)
32      import
33      type(t5), intent(in) :: d
34    end
35    subroutine p7
36    end
37    subroutine p8
38    end
39    function f(a,b,dp)
40      import
41      type(t1), intent(in) :: a
42      type, extends(t2) :: localt1
43        procedure(p3), pointer, nopass :: p
44      end type
45      type, extends(localt1) :: localt2
46       contains
47        procedure, nopass :: p8
48      end type
49      type(localt2), intent(in) :: b
50      procedure(p5) dp
51      type(t4), pointer :: f
52    end
53  end interface
54end
55
56!Expect: m.mod
57!module m
58!type::t1
59!procedure(p1),nopass,pointer::p
60!end type
61!type::t2
62!procedure(p2),nopass,pointer::p
63!end type
64!type::t3
65!procedure(p4),nopass,pointer::p
66!end type
67!type::t4
68!procedure(p6),nopass,pointer::p
69!end type
70!type::t5
71!procedure(p7),nopass,pointer::p
72!end type
73!interface
74!subroutine p1()
75!end
76!end interface
77!interface
78!subroutine p2()
79!end
80!end interface
81!interface
82!subroutine p3()
83!end
84!end interface
85!interface
86!subroutine p4()
87!end
88!end interface
89!interface
90!subroutine p5(c)
91!import::t3
92!type(t3),intent(in)::c
93!end
94!end interface
95!interface
96!subroutine p6(d)
97!import::t5
98!type(t5),intent(in)::d
99!end
100!end interface
101!interface
102!subroutine p7()
103!end
104!end interface
105!interface
106!subroutine p8()
107!end
108!end interface
109!interface
110!function f(a,b,dp)
111!import::p3
112!import::p5
113!import::p8
114!import::t1
115!import::t2
116!import::t4
117!type(t1),intent(in)::a
118!type,extends(t2)::localt1
119!procedure(p3),nopass,pointer::p
120!end type
121!type,extends(localt1)::localt2
122!contains
123!procedure,nopass::p8
124!end type
125!type(localt2),intent(in)::b
126!procedure(p5)::dp
127!type(t4),pointer::f
128!end
129!end interface
130!end
131