llvm-project/flang/test/Semantics/null-init.f90

76 lines
1.6 KiB
Fortran

! RUN: %S/test_errors.sh %s %t %f18
! Tests valid and invalid NULL initializers
module m1
implicit none
!ERROR: No explicit type declared for 'null'
private :: null
end module
module m2
implicit none
private :: null
integer, pointer :: p => null()
end module
module m3
private :: null
integer, pointer :: p => null()
end module
module m4
intrinsic :: null
integer, pointer :: p => null()
end module
module m5
external :: null
!ERROR: Pointer initializer must be intrinsic NULL()
integer, pointer :: p => null()
end module
module m6
!ERROR: Symbol 'null' cannot have both INTRINSIC and EXTERNAL attributes
integer, pointer :: p => null()
external :: null
end module
module m7
interface
function null() result(p)
integer, pointer :: p
end function
end interface
!ERROR: Pointer initializer must be intrinsic NULL()
integer, pointer :: p => null()
end module
module m8
integer, pointer :: p => null()
interface
!ERROR: 'null' is already declared in this scoping unit
function null() result(p)
integer, pointer :: p
end function
end interface
end module
module m9a
intrinsic :: null
contains
function foo()
integer, pointer :: foo
foo => null()
end function
end module
module m9b
use m9a, renamed => null, null => foo
integer, pointer :: p => renamed()
!ERROR: Pointer initializer must be intrinsic NULL()
integer, pointer :: q => null()
integer, pointer :: d1, d2
data d1/renamed()/
!ERROR: An initial data target must be a designator with constant subscripts
data d2/null()/
end module