When a generic interface in a module shadows a procedure of the same name that has been brought into scope via USE association, ensure that that USE association is not lost when the module file is written. Differential Revision: https://reviews.llvm.org/D135207
60 lines
857 B
Fortran
60 lines
857 B
Fortran
! RUN: %python %S/test_modfile.py %s %flang_fc1
|
|
! Ensure that procedure name or derived type name that has been shadowed
|
|
! behind a generic interface gets its proper USE statement in a module file.
|
|
module m1
|
|
contains
|
|
subroutine foo
|
|
end subroutine
|
|
end module
|
|
module m2
|
|
use m1
|
|
interface foo
|
|
procedure foo
|
|
end interface
|
|
end module
|
|
module m3
|
|
type foo
|
|
end type
|
|
end module
|
|
module m4
|
|
use m4
|
|
interface foo
|
|
procedure bar
|
|
end interface
|
|
contains
|
|
integer function bar
|
|
end function
|
|
end module
|
|
|
|
!Expect: m1.mod
|
|
!module m1
|
|
!contains
|
|
!subroutine foo()
|
|
!end
|
|
!end
|
|
|
|
!Expect: m2.mod
|
|
!module m2
|
|
!use m1,only:foo
|
|
!interface foo
|
|
!procedure::foo
|
|
!end interface
|
|
!end
|
|
|
|
!Expect: m3.mod
|
|
!module m3
|
|
!type::foo
|
|
!end type
|
|
!end
|
|
|
|
!Expect: m4.mod
|
|
!module m4
|
|
!interface foo
|
|
!procedure::bar
|
|
!end interface
|
|
!contains
|
|
!function bar()
|
|
!integer(4)::bar
|
|
!end
|
|
!end
|