Generic type-bound interfaces for user-defined operators need to be formatted as "OPERATOR(.op.)", not just ".op." PRIVATE generics need to be marked as such. Declaration ordering: when a generic interface shadows a derived type of the same name, it needs to be emitted to the module file at the point of definition of the derived type; otherwise, the derived type's definition may appear after its first use. The module symbol for a module read from a module file needs to be marked as coming from a module file before semantic processing is performed on the contents of the module so that any special handling for declarations in module files can be properly activated. IMPORT statements were sometimes missing for use-associated symbols in surrounding scopes; fine-tune NeedImport(). Differential Revision: https://reviews.llvm.org/D94636
33 lines
481 B
Fortran
33 lines
481 B
Fortran
! RUN: %S/test_modfile.sh %s %t %f18
|
|
|
|
! Ensure that a dummy procedure's interface's imports
|
|
! appear in the module file.
|
|
|
|
module m
|
|
type :: t
|
|
end type
|
|
contains
|
|
subroutine s1(s2)
|
|
interface
|
|
subroutine s2(x)
|
|
import
|
|
class(t) :: x
|
|
end subroutine
|
|
end interface
|
|
end subroutine
|
|
end module
|
|
!Expect: m.mod
|
|
!module m
|
|
!type::t
|
|
!end type
|
|
!contains
|
|
!subroutine s1(s2)
|
|
!interface
|
|
!subroutine s2(x)
|
|
!import::t
|
|
!class(t)::x
|
|
!end
|
|
!end interface
|
|
!end
|
|
!end
|