xref: /llvm-project/flang/test/Semantics/modfile46.f90 (revision df3e5f18d0eb5c7b389f2a17f6cdb08a4787800c)
1! RUN: %python %S/test_modfile.py %s %flang_fc1
2! Ensure that interfaces, which are internal to procedures and are used to
3! define the interface of dummy or return value procedures, are included in
4! .mod files.
5module m
6  implicit none
7contains
8  function f(x)
9    real, intent(in) :: x
10    abstract interface
11       subroutine used_int(x, p)
12         implicit none
13         real, intent(out) :: x
14         interface
15            subroutine inner_int(x)
16              implicit none
17              real, intent(out) :: x
18            end subroutine inner_int
19         end interface
20         procedure(inner_int) :: p
21       end subroutine used_int
22
23       pure logical function unused_int(i)
24         implicit none
25         integer, intent(in) :: i
26       end function unused_int
27    end interface
28    procedure(used_int), pointer :: f
29
30    f => null()
31  contains
32    subroutine internal()
33    end subroutine internal
34  end function f
35end module m
36
37!Expect: m.mod
38!module m
39!contains
40!function f(x)
41!real(4),intent(in)::x
42!abstract interface
43!subroutine used_int(x,p)
44!real(4),intent(out)::x
45!interface
46!subroutine inner_int(x)
47!real(4),intent(out)::x
48!end
49!end interface
50!procedure(inner_int)::p
51!end
52!end interface
53!procedure(used_int),pointer::f
54!end
55!end
56