xref: /llvm-project/flang/test/Semantics/implicit15.f90 (revision 90d753ab75afdaab998cad20620b8197610e6dbd)
1*90d753abSPeter Klausler!RUN: %flang_fc1 -fdebug-unparse  %s  2>&1 | FileCheck %s
2*90d753abSPeter Klausler!Test inheritance of implicit rules in submodules and separate module
3*90d753abSPeter Klausler!procedures.
4*90d753abSPeter Klausler
5*90d753abSPeter Klauslermodule m
6*90d753abSPeter Klausler  implicit integer(1)(a-z)
7*90d753abSPeter Klausler  interface
8*90d753abSPeter Klausler    module subroutine mp(da) ! integer(2)
9*90d753abSPeter Klausler      implicit integer(2)(a-z)
10*90d753abSPeter Klausler    end
11*90d753abSPeter Klausler  end interface
12*90d753abSPeter Klausler  save :: mv ! integer(1)
13*90d753abSPeter Klauslerend
14*90d753abSPeter Klausler
15*90d753abSPeter Klauslersubmodule(m) sm1
16*90d753abSPeter Klausler  implicit integer(8)(a-z)
17*90d753abSPeter Klausler  save :: sm1v ! integer(8)
18*90d753abSPeter Klausler  interface
19*90d753abSPeter Klausler    module subroutine sm1p(da) ! default real
20*90d753abSPeter Klausler    end
21*90d753abSPeter Klausler  end interface
22*90d753abSPeter Klauslerend
23*90d753abSPeter Klausler
24*90d753abSPeter Klauslersubmodule(m:sm1) sm2
25*90d753abSPeter Klausler  implicit integer(2)(a-c,e-z)
26*90d753abSPeter Klausler  save :: sm2v ! integer(2)
27*90d753abSPeter Klausler contains
28*90d753abSPeter Klausler  module subroutine sm1p(da) ! default real
29*90d753abSPeter Klausler    save :: sm1pv ! inherited integer(2)
30*90d753abSPeter Klausler    !CHECK: PRINT *, 1_4, 8_4, 2_4, 4_4, 2_4
31*90d753abSPeter Klausler    print *, kind(mv), kind(sm1v), kind(sm2v), kind(da), kind(sm1pv)
32*90d753abSPeter Klausler  end
33*90d753abSPeter Klauslerend
34*90d753abSPeter Klausler
35*90d753abSPeter Klauslersubmodule(m:sm2) sm3
36*90d753abSPeter Klausler  implicit integer(8)(a-z)
37*90d753abSPeter Klausler  save :: sm3v ! integer(8)
38*90d753abSPeter Klausler contains
39*90d753abSPeter Klausler  module procedure mp
40*90d753abSPeter Klausler    save :: mpv ! inherited integer(8)
41*90d753abSPeter Klausler    call sm1p(1.)
42*90d753abSPeter Klausler    !CHECK: PRINT *, 1_4, 8_4, 2_4, 8_4, 2_4, 8_4
43*90d753abSPeter Klausler    print *, kind(mv), kind(sm1v), kind(sm2v), kind(sm3v), kind(da), kind(mpv)
44*90d753abSPeter Klausler  end
45*90d753abSPeter Klauslerend
46*90d753abSPeter Klausler
47*90d753abSPeter Klauslerprogram main
48*90d753abSPeter Klausler  use m
49*90d753abSPeter Klausler  call mp(1_2)
50*90d753abSPeter Klauslerend
51