llvm/flang/test/Semantics/modfile61.f90

! 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