| ! RUN: %python %S/test_errors.py %s %flang_fc1 -Werror |
| ! Catch discrepancies between a local interface and a global definition |
| |
| subroutine global1(x) |
| integer, intent(in) :: x |
| end subroutine |
| |
| subroutine global2(x) bind(c,name="xyz") |
| integer, intent(in) :: x |
| end subroutine |
| |
| subroutine global3(x) |
| integer, intent(in) :: x |
| end subroutine |
| |
| pure subroutine global4(x) |
| integer, intent(in) :: x |
| end subroutine |
| |
| subroutine global5(x) |
| integer, intent(in) :: x |
| end subroutine |
| |
| ! Regression check: don't emit bogus "Implicit declaration of function 'global7' has a different result type than in previous declaration" |
| recursive function global6() |
| integer global6, z, n |
| entry global7(n) result(z) |
| if (n > 0) z = global7(n-1) |
| end function |
| |
| program test |
| interface |
| !WARNING: The global subprogram 'global1' is not compatible with its local procedure declaration (incompatible dummy argument #1: incompatible dummy data object types: INTEGER(4) vs REAL(4)) |
| subroutine global1(x) |
| real, intent(in) :: x |
| end subroutine |
| subroutine global2(x) |
| real, intent(in) :: x |
| end subroutine |
| subroutine global3(x) bind(c,name="abc") |
| real, intent(in) :: x |
| end subroutine |
| subroutine global4(x) ! not PURE, but that's ok |
| integer, intent(in) :: x |
| end subroutine |
| !WARNING: The global subprogram 'global5' is not compatible with its local procedure declaration (incompatible procedure attributes: Pure) |
| pure subroutine global5(x) |
| integer, intent(in) :: x |
| end subroutine |
| function global6() |
| integer global6 |
| end function |
| function global7(n) result(z) |
| integer n, z |
| end function |
| end interface |
| end |