xref: /llvm-project/flang/test/Semantics/modfile14.f90 (revision dc453dcf760e6d558da3a4d7fff301baa5f37aba)
1*dc453dcfSIvan Zhechev! RUN: %python %S/test_modfile.py %s %flang_fc1
264ab3302SCarolineConcattomodule m
364ab3302SCarolineConcatto  type t1
464ab3302SCarolineConcatto  contains
564ab3302SCarolineConcatto    procedure, nopass :: s2
664ab3302SCarolineConcatto    procedure, nopass :: s3
764ab3302SCarolineConcatto    procedure :: r
864ab3302SCarolineConcatto    generic :: foo => s2
964ab3302SCarolineConcatto    generic :: read(formatted)=> r
1064ab3302SCarolineConcatto  end type
1164ab3302SCarolineConcatto  type, extends(t1) :: t2
1264ab3302SCarolineConcatto  contains
1364ab3302SCarolineConcatto    procedure, nopass :: s4
1464ab3302SCarolineConcatto    generic :: foo => s3
1564ab3302SCarolineConcatto    generic :: foo => s4
1664ab3302SCarolineConcatto  end type
1764ab3302SCarolineConcattocontains
1864ab3302SCarolineConcatto  subroutine s2(i)
1964ab3302SCarolineConcatto  end
2064ab3302SCarolineConcatto  subroutine s3(r)
2164ab3302SCarolineConcatto  end
2264ab3302SCarolineConcatto  subroutine s4(z)
2364ab3302SCarolineConcatto    complex :: z
2464ab3302SCarolineConcatto  end
2564ab3302SCarolineConcatto  subroutine r(dtv, unit, iotype, v_list, iostat, iomsg)
2664ab3302SCarolineConcatto    class(t1), intent(inout) :: dtv
2764ab3302SCarolineConcatto    integer, intent(in) :: unit
2864ab3302SCarolineConcatto    character (len=*), intent(in) :: iotype
2964ab3302SCarolineConcatto    integer, intent(in) :: v_list(:)
3064ab3302SCarolineConcatto    integer, intent(out) :: iostat
3164ab3302SCarolineConcatto    character (len=*), intent(inout) :: iomsg
3264ab3302SCarolineConcatto  end
3364ab3302SCarolineConcattoend
3464ab3302SCarolineConcatto
3564ab3302SCarolineConcatto!Expect: m.mod
3664ab3302SCarolineConcatto!module m
3764ab3302SCarolineConcatto!  type::t1
3864ab3302SCarolineConcatto!  contains
3964ab3302SCarolineConcatto!    procedure,nopass::s2
4064ab3302SCarolineConcatto!    procedure,nopass::s3
4164ab3302SCarolineConcatto!    procedure::r
4264ab3302SCarolineConcatto!    generic::foo=>s2
4364ab3302SCarolineConcatto!    generic::read(formatted)=>r
4464ab3302SCarolineConcatto!  end type
4564ab3302SCarolineConcatto!  type,extends(t1)::t2
4664ab3302SCarolineConcatto!  contains
4764ab3302SCarolineConcatto!    procedure,nopass::s4
4864ab3302SCarolineConcatto!    generic::foo=>s3
4964ab3302SCarolineConcatto!    generic::foo=>s4
5064ab3302SCarolineConcatto!  end type
5164ab3302SCarolineConcatto!contains
5264ab3302SCarolineConcatto!  subroutine s2(i)
5364ab3302SCarolineConcatto!    integer(4)::i
5464ab3302SCarolineConcatto!  end
5564ab3302SCarolineConcatto!  subroutine s3(r)
5664ab3302SCarolineConcatto!    real(4)::r
5764ab3302SCarolineConcatto!  end
5864ab3302SCarolineConcatto!  subroutine s4(z)
5964ab3302SCarolineConcatto!    complex(4)::z
6064ab3302SCarolineConcatto!  end
6164ab3302SCarolineConcatto!  subroutine r(dtv,unit,iotype,v_list,iostat,iomsg)
6264ab3302SCarolineConcatto!    class(t1),intent(inout)::dtv
6364ab3302SCarolineConcatto!    integer(4),intent(in)::unit
6464ab3302SCarolineConcatto!    character(*,1),intent(in)::iotype
6564ab3302SCarolineConcatto!    integer(4),intent(in)::v_list(:)
6664ab3302SCarolineConcatto!    integer(4),intent(out)::iostat
6764ab3302SCarolineConcatto!    character(*,1),intent(inout)::iomsg
6864ab3302SCarolineConcatto!  end
6964ab3302SCarolineConcatto!end
70