| ! RUN: %python %S/test_errors.py %s %flang_fc1 |
| ! Ensures that a generic's shadowed procedure or derived type |
| ! can be overridden by a valid interior interface definition |
| ! in some cases. |
| |
| module m1 |
| contains |
| subroutine foo |
| end subroutine |
| subroutine test |
| interface foo |
| subroutine foo(n) |
| integer, intent(in) :: n |
| end subroutine |
| end interface |
| call foo(1) |
| end subroutine |
| end module |
| |
| module m2 |
| contains |
| subroutine test |
| interface foo |
| subroutine foo(n) |
| integer, intent(in) :: n |
| end subroutine |
| end interface |
| call foo(1) |
| end subroutine |
| subroutine foo |
| end subroutine |
| end module |
| |
| module m3 |
| interface |
| subroutine foo |
| end subroutine |
| end interface |
| contains |
| subroutine test |
| interface foo |
| subroutine foo(n) |
| integer, intent(in) :: n |
| end subroutine |
| end interface |
| call foo(1) |
| end subroutine |
| end module |
| |
| module m4a |
| contains |
| subroutine foo |
| end subroutine |
| end module |
| module m4b |
| use m4a |
| contains |
| subroutine test |
| interface foo |
| subroutine foo(n) |
| integer, intent(in) :: n |
| end subroutine |
| end interface |
| call foo(1) |
| end subroutine |
| end module |
| |
| module m5 |
| type bar |
| end type |
| contains |
| subroutine test |
| interface bar |
| real function bar() |
| end function |
| end interface |
| print *, bar() |
| end subroutine |
| end module |