| ! { dg-do compile } |
| ! This program tests the patch for PRs 20881, 23308, 25538 & 25710 |
| ! Assembled from PRs by Paul Thomas <pault@gcc.gnu.org> |
| module m |
| contains |
| subroutine g(x) ! Local entity |
| REAL :: x |
| x = 1.0 |
| end subroutine g |
| end module m |
| ! Error only appears once but testsuite associates with both lines. |
| function f(x) ! { dg-error "is already being used as a FUNCTION" } |
| REAL :: f, x |
| f = x |
| end function f |
| |
| function g(x) ! Global entity |
| REAL :: g, x |
| g = x |
| |
| ! PR25710========================================================== |
| ! Lahey -2607-S: "SOURCE.F90", line 26: |
| ! Function 'f' cannot be referenced as a subroutine. The previous |
| ! definition is in 'line 12'. |
| |
| call f(g) ! { dg-error "is already being used as a FUNCTION" } |
| end function g |
| ! Error only appears once but testsuite associates with both lines. |
| function h(x) ! { dg-error "is already being used as a FUNCTION" } |
| REAL :: h, x |
| h = x |
| end function h |
| |
| SUBROUTINE TT() |
| CHARACTER(LEN=10), EXTERNAL :: j |
| CHARACTER(LEN=10) :: T |
| ! PR20881=========================================================== |
| ! Error only appears once but testsuite associates with both lines. |
| T = j () ! { dg-error "is already being used as a FUNCTION" } |
| print *, T |
| END SUBROUTINE TT |
| |
| use m ! Main program |
| real x |
| integer a(10) |
| |
| ! PR23308=========================================================== |
| ! Lahey - 2604-S: "SOURCE.F90", line 52: |
| ! The name 'foo' cannot be specified as both external procedure name |
| ! and common block name. The previous appearance is in 'line 68'. |
| ! Error only appears once but testsuite associates with both lines. |
| common /foo/ a ! { dg-error "is already being used as a COMMON" } |
| |
| call f (x) ! OK - reference to local entity |
| call g (x) ! -ditto- |
| |
| ! PR25710=========================================================== |
| ! Lahey - 2607-S: "SOURCE.F90", line 62: |
| ! Function 'h' cannot be referenced as a subroutine. The previous |
| ! definition is in 'line 29'. |
| |
| call h (x) ! { dg-error "is already being used as a FUNCTION" } |
| |
| ! PR23308=========================================================== |
| ! Lahey - 2521-S: "SOURCE.F90", line 68: Intrinsic procedure name or |
| ! external procedure name same as common block name 'foo'. |
| |
| call foo () ! { dg-error "is already being used as a COMMON" } |
| |
| contains |
| SUBROUTINE f (x) ! Local entity |
| real x |
| x = 2 |
| end SUBROUTINE f |
| end |
| |
| ! PR20881=========================================================== |
| ! Lahey - 2636-S: "SOURCE.F90", line 81: |
| ! Subroutine 'j' is previously referenced as a function in 'line 39'. |
| |
| SUBROUTINE j (x) ! { dg-error "is already being used as a FUNCTION" } |
| integer a(10) |
| common /bar/ a ! Global entity foo |
| real x |
| x = bar(1.0) ! OK for local procedure to have common block name |
| contains |
| function bar (x) |
| real bar, x |
| bar = 2.0*x |
| end function bar |
| END SUBROUTINE j |
| |
| ! PR25538=========================================================== |
| ! would ICE with entry and procedure having same names. |
| subroutine link2 (namef) ! { dg-error "is already being used as a SUBROUTINE" } |
| entry link2 (nameg) ! { dg-error "is already being used as a SUBROUTINE" } |
| return |
| end |
| |
| ! { dg-final { cleanup-modules "m" } } |