xref: /llvm-project/flang/test/Semantics/modfile49.f90 (revision 0c0b2ea98816067aea43f38892e5901c74271d40)
1df3e5f18SPeter Klausler! RUN: %python %S/test_modfile.py %s %flang_fc1
2df3e5f18SPeter Klausler! Ensure that symbols and types needed to declare procedures and procedure pointers
3df3e5f18SPeter Klausler! are properly imported into interfaces.
4df3e5f18SPeter Klauslermodule m
5df3e5f18SPeter Klausler  type :: t
6df3e5f18SPeter Klausler  end type
7*0c0b2ea9SPeter Klausler  abstract interface
8*0c0b2ea9SPeter Klausler    subroutine iface
9*0c0b2ea9SPeter Klausler    end
10*0c0b2ea9SPeter Klausler  end interface
11*0c0b2ea9SPeter Klausler  procedure(iface) :: ext
12df3e5f18SPeter Klausler  interface
13df3e5f18SPeter Klausler    subroutine subr(p1,p2)
14df3e5f18SPeter Klausler      import ext, t
15df3e5f18SPeter Klausler      procedure(ext) :: p1
16df3e5f18SPeter Klausler      procedure(type(t)), pointer :: p2
17df3e5f18SPeter Klausler    end subroutine
18df3e5f18SPeter Klausler    function fun() result(res)
19df3e5f18SPeter Klausler      import subr
20df3e5f18SPeter Klausler      procedure(subr), pointer :: res
21df3e5f18SPeter Klausler    end function
22df3e5f18SPeter Klausler  end interface
23df3e5f18SPeter Klauslerend module
24df3e5f18SPeter Klausler
25df3e5f18SPeter Klausler!Expect: m.mod
26df3e5f18SPeter Klausler!module m
27df3e5f18SPeter Klausler!type::t
28df3e5f18SPeter Klausler!end type
29*0c0b2ea9SPeter Klausler!abstract interface
30*0c0b2ea9SPeter Klausler!subroutine iface()
31*0c0b2ea9SPeter Klausler!end
32*0c0b2ea9SPeter Klausler!end interface
33*0c0b2ea9SPeter Klausler!procedure(iface)::ext
34df3e5f18SPeter Klausler!interface
35df3e5f18SPeter Klausler!subroutine subr(p1,p2)
36df3e5f18SPeter Klausler!import::ext
37df3e5f18SPeter Klausler!import::t
38df3e5f18SPeter Klausler!procedure(ext)::p1
39df3e5f18SPeter Klausler!procedure(type(t)),pointer::p2
40df3e5f18SPeter Klausler!end
41df3e5f18SPeter Klausler!end interface
42df3e5f18SPeter Klausler!interface
43df3e5f18SPeter Klausler!function fun() result(res)
44df3e5f18SPeter Klausler!import::subr
45df3e5f18SPeter Klausler!procedure(subr),pointer::res
46df3e5f18SPeter Klausler!end
47df3e5f18SPeter Klausler!end interface
48df3e5f18SPeter Klausler!end
49