blob: f401eb254fde02c31ed7fdc8ec4fb3be9c9a7c2b [file] [log] [blame] [edit]
! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic
! Catch NULL() actual argument association with allocatable dummy argument
program test
real, allocatable :: a
!ERROR: NULL() actual argument 'NULL()' may not be associated with allocatable dummy argument dummy argument 'a=' that is INTENT(OUT) or INTENT(IN OUT)
call foo0(null())
!WARNING: NULL() actual argument 'NULL()' should not be associated with allocatable dummy argument dummy argument 'a=' without INTENT(IN)
call foo1(null())
!PORTABILITY: Allocatable dummy argument 'a=' is associated with NULL()
call foo2(null())
call foo3(null()) ! ok
!ERROR: Actual argument associated with INTENT(IN OUT) dummy argument 'a=' is not definable
!BECAUSE: 'null(mold=a)' is a null pointer
call foo0(null(mold=a))
!WARNING: A null allocatable should not be associated with allocatable dummy argument 'a=' without INTENT(IN)
call foo1(null(mold=a))
call foo2(null(mold=a)) ! ok
call foo3(null(mold=a)) ! ok
contains
subroutine foo0(a)
real, allocatable, intent(in out) :: a
end subroutine
subroutine foo1(a)
real, allocatable :: a
end subroutine
subroutine foo2(a)
real, allocatable, intent(in) :: a
end subroutine
subroutine foo3(a)
real, allocatable, optional :: a
end subroutine
end