! { dg-do compile } ! { dg-options "-std=f2008ts" } ! ! PR fortran/48820 ! ! Assumed-rank constraint checks and other diagnostics ! subroutine valid1a(x) integer, intent(in), pointer, contiguous :: x(..) end subroutine valid1a subroutine valid1(x) integer, intent(in) :: x(..) end subroutine valid1 subroutine valid2(x) type(*) :: x end subroutine valid2 subroutine foo99(x) integer x(99) call valid1(x) ! { dg-error "Explicit interface required" } call valid2(x(1)) ! { dg-error "Explicit interface required" } end subroutine foo99 subroutine foo(x) integer :: x(..) print *, ubound(x,dim=2000) ! { dg-error "is not a valid dimension index" } call bar(x) ! { dg-error "Assumed-rank argument requires an explicit interface" } call intnl(x) ! { dg-error "requires that the dummy argument 'x' has assumed-rank" } contains subroutine intnl(x) integer :: x(:) end subroutine intnl end subroutine foo subroutine foo2(x) integer :: x(..) call valid3(x(:)) ! { dg-error "Assumed-rank variable x at .1. shall not have a subobject reference" } call valid3(x+1) ! { dg-error "Assumed-rank variable x at .1. may only be used as actual argument" } contains subroutine valid3(y) integer :: y(..) end subroutine end subroutine subroutine foo3() integer :: x(..) ! { dg-error "Assumed-rank array at .1. must be a dummy argument" } end subroutine