peter klausler 4864d9f7e9 [flang] Fix some module file issues exposed by Whizard
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
2021-01-14 09:44:50 -08:00

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