! { dg-do compile } ! This program tests the patch for PRs 20881, 23308, 25538 & 25710 ! Assembled from PRs by Paul Thomas 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" } }