| !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 |