!RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s
!Test inheritance of implicit rules in submodules and separate module
!procedures.
module m
implicit integer(1)(a-z)
interface
module subroutine mp(da) ! integer(2)
implicit integer(2)(a-z)
end
end interface
save :: mv ! integer(1)
end
submodule(m) sm1
implicit integer(8)(a-z)
save :: sm1v ! integer(8)
interface
module subroutine sm1p(da) ! default real
end
end interface
end
submodule(m:sm1) sm2
implicit integer(2)(a-c,e-z)
save :: sm2v ! integer(2)
contains
module subroutine sm1p(da) ! default real
save :: sm1pv ! inherited integer(2)
!CHECK: PRINT *, 1_4, 8_4, 2_4, 4_4, 2_4
print *, kind(mv), kind(sm1v), kind(sm2v), kind(da), kind(sm1pv)
end
end
submodule(m:sm2) sm3
implicit integer(8)(a-z)
save :: sm3v ! integer(8)
contains
module procedure mp
save :: mpv ! inherited integer(8)
call sm1p(1.)
!CHECK: PRINT *, 1_4, 8_4, 2_4, 8_4, 2_4, 8_4
print *, kind(mv), kind(sm1v), kind(sm2v), kind(sm3v), kind(da), kind(mpv)
end
end
program main
use m
call mp(1_2)
end