blob: 1198715b7c8d6b85a6475328c978e4509b850737 [file] [log] [blame]
! { dg-do compile }
! PR fortran/55978
!
! Passing of NULL() with and without MOLD as actual argument
!
! Testcase derived from pr55978 comment#16
program pr55978_c16
implicit none
integer, pointer :: p(:)
integer, allocatable :: a(:)
character(10), pointer :: c
character(10), pointer :: cp(:)
type t
integer, pointer :: p(:)
integer, allocatable :: a(:)
end type
type(t) :: d
! (1) pointer
p => null()
call sub (p)
! (2) allocatable
call sub (a)
call sub (d%a)
! (3) pointer component
d%p => null ()
call sub (d%p)
! (4) NULL
call sub (null (a)) ! OK
call sub (null (p)) ! OK
call sub (null (d%a)) ! OK
call sub (null (d%p)) ! OK
call sub (null ()) ! was erroneously rejected with:
! Actual argument contains too few elements for dummy argument 'x' (1/4)
call bla (null(c))
call bla (null()) ! was erroneously rejected with:
! Actual argument contains too few elements for dummy argument 'x' (1/10)
call foo (null(cp))
call foo (null())
call bar (null(cp))
call bar (null()) ! was erroneously rejected with:
! Actual argument contains too few elements for dummy argument 'x' (1/70)
contains
subroutine sub(x)
integer, intent(in), optional :: x(4)
if (present (x)) stop 1
end
subroutine bla(x)
character(len=10), intent(in), optional :: x
if (present (x)) stop 2
end
subroutine foo(x)
character(len=10), intent(in), optional :: x(:)
if (present (x)) stop 3
end
subroutine bar(x)
character(len=10), intent(in), optional :: x(7)
if (present (x)) stop 4
end
end