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
|
! RUN: %python %S/test_errors.py %s %flang_fc1
module module_before_1
end
module module_before_2
end
block data block_data_before_1
end
block data block_data_before_2
end
subroutine explicit_before_1(a)
real, optional :: a
end
subroutine explicit_before_2(a)
real, optional :: a
end
subroutine implicit_before_1(a)
real :: a
end
subroutine implicit_before_2(a)
real :: a
end
function explicit_func_before_1(a)
real, optional :: a
end
function explicit_func_before_2(a)
real, optional :: a
end
function implicit_func_before_1(a)
real :: a
end
function implicit_func_before_2(a)
real :: a
end
program test
external justfine ! OK to name a BLOCK DATA if not called
!ERROR: The global entity 'module_before_1' corresponding to the local procedure 'module_before_1' is not a callable subprogram
external module_before_1
!ERROR: The global entity 'block_data_before_1' corresponding to the local procedure 'block_data_before_1' is not a callable subprogram
external block_data_before_1
!ERROR: The global subprogram 'explicit_before_1' may not be referenced via the implicit interface 'explicit_before_1'
external explicit_before_1
external implicit_before_1
!ERROR: The global subprogram 'explicit_func_before_1' may not be referenced via the implicit interface 'explicit_func_before_1'
external explicit_func_before_1
external implicit_func_before_1
!ERROR: The global entity 'module_after_1' corresponding to the local procedure 'module_after_1' is not a callable subprogram
external module_after_1
!ERROR: The global entity 'block_data_after_1' corresponding to the local procedure 'block_data_after_1' is not a callable subprogram
external block_data_after_1
!ERROR: The global subprogram 'explicit_after_1' may not be referenced via the implicit interface 'explicit_after_1'
external explicit_after_1
external implicit_after_1
!ERROR: The global subprogram 'explicit_func_after_1' may not be referenced via the implicit interface 'explicit_func_after_1'
external explicit_func_after_1
external implicit_func_after_1
call module_before_1
!ERROR: 'module_before_2' is not a callable procedure
call module_before_2
call block_data_before_1
!ERROR: 'block_data_before_2' is not a callable procedure
call block_data_before_2
call explicit_before_1(1.)
!ERROR: References to the procedure 'explicit_before_2' require an explicit interface
call explicit_before_2(1.)
!WARNING: If the procedure's interface were explicit, this reference would be in error
!BECAUSE: Dummy argument 'a=' (#1) is not OPTIONAL and is not associated with an actual argument in this procedure reference
call implicit_before_1
!WARNING: If the procedure's interface were explicit, this reference would be in error
!BECAUSE: Dummy argument 'a=' (#1) is not OPTIONAL and is not associated with an actual argument in this procedure reference
call implicit_before_2
print *, explicit_func_before_1(1.)
!ERROR: References to the procedure 'explicit_func_before_2' require an explicit interface
print *, explicit_func_before_2(1.)
!WARNING: If the procedure's interface were explicit, this reference would be in error
!BECAUSE: Dummy argument 'a=' (#1) is not OPTIONAL and is not associated with an actual argument in this procedure reference
print *, implicit_func_before_1()
!WARNING: If the procedure's interface were explicit, this reference would be in error
!BECAUSE: Dummy argument 'a=' (#1) is not OPTIONAL and is not associated with an actual argument in this procedure reference
print *, implicit_func_before_2()
call module_after_1
call module_after_2
call block_data_after_1
call block_data_after_2
call explicit_after_1(1.)
!ERROR: References to the procedure 'explicit_after_2' require an explicit interface
call explicit_after_2(1.)
!WARNING: If the procedure's interface were explicit, this reference would be in error
!BECAUSE: Dummy argument 'a=' (#1) is not OPTIONAL and is not associated with an actual argument in this procedure reference
call implicit_after_1
!WARNING: If the procedure's interface were explicit, this reference would be in error
!BECAUSE: Dummy argument 'a=' (#1) is not OPTIONAL and is not associated with an actual argument in this procedure reference
call implicit_after_2
print *, explicit_func_after_1(1.)
!ERROR: References to the procedure 'explicit_func_after_2' require an explicit interface
print *, explicit_func_after_2(1.)
!WARNING: If the procedure's interface were explicit, this reference would be in error
!BECAUSE: Dummy argument 'a=' (#1) is not OPTIONAL and is not associated with an actual argument in this procedure reference
print *, implicit_func_after_1()
!WARNING: If the procedure's interface were explicit, this reference would be in error
!BECAUSE: Dummy argument 'a=' (#1) is not OPTIONAL and is not associated with an actual argument in this procedure reference
print *, implicit_func_after_2()
end program
block data justfine
end
module module_after_1
end
!ERROR: 'module_after_2' is already declared in this scoping unit
module module_after_2
end
block data block_data_after_1
end
!ERROR: BLOCK DATA 'block_data_after_2' has been called
block data block_data_after_2
end
subroutine explicit_after_1(a)
real, optional :: a
end
subroutine explicit_after_2(a)
real, optional :: a
end
subroutine implicit_after_1(a)
real :: a
end
subroutine implicit_after_2(a)
real :: a
end
function explicit_func_after_1(a)
real, optional :: a
end
function explicit_func_after_2(a)
real, optional :: a
end
function implicit_func_after_1(a)
real :: a
end
function implicit_func_after_2(a)
real :: a
end
|