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