1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
|
! RUN: %S/test_errors.sh %s %t %flang_fc1
! REQUIRES: shell
module m1
implicit none
contains
subroutine foo(x)
real :: x
end subroutine
end module
!Note: PGI, Intel, GNU, and NAG allow this; Sun does not
module m2
use m1
implicit none
!ERROR: 'foo' may not be the name of both a generic interface and a procedure unless it is a specific procedure of the generic
interface foo
module procedure s
end interface
contains
subroutine s(i)
integer :: i
end subroutine
end module
subroutine foo
!ERROR: Cannot use-associate 'foo'; it is already declared in this scope
use m1
end
subroutine bar
!ERROR: Cannot use-associate 'bar'; it is already declared in this scope
use m1, bar => foo
end
!OK to use-associate a type with the same name as a generic
module m3a
type :: foo
end type
end
module m3b
use m3a
interface foo
end interface
end
! Can't have derived type and function with same name
module m4a
type :: foo
end type
contains
!ERROR: 'foo' is already declared in this scoping unit
function foo(x)
end
end
! Even if there is also a generic interface of that name
module m4b
type :: foo
end type
!ERROR: 'foo' is already declared in this scoping unit
interface foo
procedure :: foo
end interface foo
contains
function foo(x)
end
end
module m4c
type :: foo
end type
interface foo
!ERROR: 'foo' is already declared in this scoping unit
real function foo()
end function foo
end interface foo
end
! Use associating a name that is a generic and a derived type
module m5a
interface g
end interface
type g
end type
end module
module m5b
use m5a
interface g
procedure f
end interface
type(g) :: x
contains
function f(i)
end function
end module
subroutine s5
use m5b
type(g) :: y
end
module m6
real :: f6
interface g6
!ERROR: 'f6' is already declared in this scoping unit
real function f6()
end function f6
end interface g6
end module m6
module m7
integer :: f7
interface g7
!ERROR: 'f7' is already declared in this scoping unit
real function f7()
end function f7
end interface g7
end module m7
module m8
real :: f8
interface g8
!ERROR: 'f8' is already declared in this scoping unit
subroutine f8()
end subroutine f8
end interface g8
end module m8
module m9
type f9
end type f9
!ERROR: 'f9' is already declared in this scoping unit
interface f9
real function f9()
end function f9
end interface f9
contains
function f9(x)
end function f9
end module m9
module m10
type :: t10
end type t10
interface f10
function f10()
end function f10
end interface f10
contains
!ERROR: 'f10' is already declared in this scoping unit
function f10(x)
end function f10
end module m10
module m11
type :: t11
end type t11
interface i11
function f11()
end function f11
end interface i11
contains
!ERROR: 'f11' is already declared in this scoping unit
function f11(x)
end function f11
end module m11
module m12
interface f12
function f12()
end function f12
end interface f12
contains
!ERROR: 'f12' is already declared in this scoping unit
function f12(x)
end function f12
end module m12
module m13
interface f13
function f13()
end function f13
end interface f13
contains
!ERROR: 'f13' is already declared in this scoping unit
function f13()
end function f13
end module m13
|