When a module procedure's interface is defined in an ancestor (sub)module with an implicitly typed dummy argument, don't emit a bogus error in the separate module procedure later if its submodule has IMPLICIT NONE. Fixes llvm-test-suite/Fortran/gfortran/regression/submodule_26.f90. Differential Revision: https://reviews.llvm.org/D157335
28 lines
1015 B
Fortran
28 lines
1015 B
Fortran
!RUN: %flang_fc1 -fdebug-dump-symbols %s | FileCheck %s
|
|
module m
|
|
interface
|
|
module subroutine s(x) ! implicitly typed
|
|
end
|
|
end interface
|
|
end
|
|
|
|
submodule (m) sm
|
|
implicit none
|
|
contains
|
|
!Ensure no error here due to IMPLICIT NONE
|
|
module procedure s
|
|
end
|
|
end
|
|
|
|
!CHECK: Module scope: m size=0 alignment=1 sourceRange=63 bytes
|
|
!CHECK: s, MODULE, PUBLIC (Subroutine): Subprogram isInterface (REAL(4) x)
|
|
!CHECK: sm: Module (m)
|
|
!CHECK: Subprogram scope: s size=4 alignment=4 sourceRange=26 bytes
|
|
!CHECK: s (Subroutine): HostAssoc
|
|
!CHECK: x (Implicit) size=4 offset=0: ObjectEntity dummy type: REAL(4)
|
|
!CHECK: Module scope: sm size=0 alignment=1 sourceRange=65 bytes
|
|
!CHECK: s, MODULE, PUBLIC (Subroutine): Subprogram (REAL(4) x) moduleInterface: s, MODULE, PUBLIC (Subroutine): Subprogram isInterface (REAL(4) x)
|
|
!CHECK: Subprogram scope: s size=4 alignment=4 sourceRange=22 bytes
|
|
!CHECK: s: HostAssoc
|
|
!CHECK: x size=4 offset=0: ObjectEntity dummy type: REAL(4)
|