| ! { dg-do compile } |
| ! |
| ! PR fortran/92736 |
| ! |
| module m |
| integer :: i, j |
| end module m |
| |
| module m2 |
| integer :: i, k |
| end module m2 |
| |
| module mod |
| use m, only: i |
| interface |
| module subroutine sb1() |
| end subroutine sb1 |
| end interface |
| end |
| |
| ! Error: use 'i' both for m's 'i' and 'j' |
| submodule(mod) sub ! { dg-error "Symbol 'i' at .1. conflicts with the rename symbol" } |
| use m1, only: i => j ! { dg-error "Symbol 'i' at .1. conflicts with the rename symbol" } |
| end |
| |
| module mod2 |
| use m, only: i |
| interface |
| module subroutine sb1() |
| end subroutine sb1 |
| end interface |
| end |
| |
| ! Error: use 'i' both for m's 'i' and m2's 'k' |
| submodule(mod2) sub2 ! { dg-error "Symbol 'i' at .1. conflicts with the rename symbol" } |
| use m2, only: i => k ! { dg-error "Symbol 'i' at .1. conflicts with the rename symbol" } |
| end |
| |
| |
| module mod3 |
| use m, only: i |
| interface |
| module subroutine sb1() |
| end subroutine sb1 |
| end interface |
| end |
| |
| ! Error: use 'i' both for m's 'i' and m2's 'i' |
| submodule(mod3) sub3 ! { dg-error "Symbol 'i' at .1. conflicts with the symbol" } |
| use m2, only: i ! { dg-error "Symbol 'i' at .1. conflicts with the symbol" } |
| end |
| |
| |
| module mod4 |
| use m, only: mm => i, i |
| interface |
| module subroutine sb1() |
| end subroutine sb1 |
| end interface |
| end |
| |
| ! OK |
| submodule(mod4) sub4 |
| use m, only: i |
| use m, only: mm => i |
| end |
| |
| module mod5 |
| use m, only: mm => i |
| interface |
| module subroutine sb1() |
| end subroutine sb1 |
| end interface |
| end |
| |
| ! mm from both m2 and m |
| submodule(mod5) sub5 ! { dg-error "Symbol 'mm' at .1. conflicts with the rename symbol" } |
| use m2, only: mm => i ! { dg-error "Symbol 'mm' at .1. conflicts with the rename symbol" } |
| end |