There were several different ways of handling the option to f18 to find predefined modules: - test_errors.sh was created by cmake substituting FLANG_INTRINSIC_MODULES_DIR into test_errors.sh.in - some tests used the flang script which has the option built it - some tests used %f18_with_includes which was replaced by the path to f18 plus the -I option - some included -I../../include/flang in their run command To make this more consistent, change %f18 to include the -intrinsic-module-directory option and use it everywhere, including to replace %flang and %f18_with_includes. This requires changing all of the invocations of the test scripts to put %f18 at the end so that it can expand to more than one argument. This eliminates the need to generate test_errors.sh which means we don't need flang/test/Semantics/CMakeLists.txt or the %B substitution. That makes the test_errors.sh command like the others, replacing %B/test/Semantics/test_errors.sh with %S/test_errors.sh. Also remove the OPTIONS: functionality as custom options can be included in the RUN: command. And remove -I/../../include/flang as that is now always included. Differential Revision: https://reviews.llvm.org/D79634
70 lines
1.4 KiB
Fortran
70 lines
1.4 KiB
Fortran
! RUN: %S/test_modfile.sh %s %t %f18
|
|
module m
|
|
type t1
|
|
contains
|
|
procedure, nopass :: s2
|
|
procedure, nopass :: s3
|
|
procedure :: r
|
|
generic :: foo => s2
|
|
generic :: read(formatted)=> r
|
|
end type
|
|
type, extends(t1) :: t2
|
|
contains
|
|
procedure, nopass :: s4
|
|
generic :: foo => s3
|
|
generic :: foo => s4
|
|
end type
|
|
contains
|
|
subroutine s2(i)
|
|
end
|
|
subroutine s3(r)
|
|
end
|
|
subroutine s4(z)
|
|
complex :: z
|
|
end
|
|
subroutine r(dtv, unit, iotype, v_list, iostat, iomsg)
|
|
class(t1), intent(inout) :: dtv
|
|
integer, intent(in) :: unit
|
|
character (len=*), intent(in) :: iotype
|
|
integer, intent(in) :: v_list(:)
|
|
integer, intent(out) :: iostat
|
|
character (len=*), intent(inout) :: iomsg
|
|
end
|
|
end
|
|
|
|
!Expect: m.mod
|
|
!module m
|
|
! type::t1
|
|
! contains
|
|
! procedure,nopass::s2
|
|
! procedure,nopass::s3
|
|
! procedure::r
|
|
! generic::foo=>s2
|
|
! generic::read(formatted)=>r
|
|
! end type
|
|
! type,extends(t1)::t2
|
|
! contains
|
|
! procedure,nopass::s4
|
|
! generic::foo=>s3
|
|
! generic::foo=>s4
|
|
! end type
|
|
!contains
|
|
! subroutine s2(i)
|
|
! integer(4)::i
|
|
! end
|
|
! subroutine s3(r)
|
|
! real(4)::r
|
|
! end
|
|
! subroutine s4(z)
|
|
! complex(4)::z
|
|
! end
|
|
! subroutine r(dtv,unit,iotype,v_list,iostat,iomsg)
|
|
! class(t1),intent(inout)::dtv
|
|
! integer(4),intent(in)::unit
|
|
! character(*,1),intent(in)::iotype
|
|
! integer(4),intent(in)::v_list(:)
|
|
! integer(4),intent(out)::iostat
|
|
! character(*,1),intent(inout)::iomsg
|
|
! end
|
|
!end
|