! PR101333 ! { dg-do compile } ! ! TS 29113 ! C407c An assumed-type actual argument that corresponds to an ! assumed-rank dummy argument shall be assumed-shape or assumed-rank. ! ! This constraint is renumbered C711 in the 2018 Fortran standard. module m interface subroutine g (a, b) implicit none type(*) :: a(..) integer :: b end subroutine end interface end module ! Check that assumed-shape works. subroutine s0 (x) use m implicit none type(*) :: x(:) call g (x, 1) end subroutine ! Check that assumed-rank works. subroutine s1 (x) use m implicit none type(*) :: x(..) call g (x, 1) end subroutine ! Check that assumed-size gives an error. subroutine s2 (x) use m implicit none type(*) :: x(*) call g (x, 1) ! { dg-error "Assumed-type actual argument at .1. corresponding to assumed-rank dummy argument 'a' must be assumed-shape or assumed-rank" } end subroutine ! Check that a scalar gives an error. subroutine s3 (x) use m implicit none type(*) :: x call g (x, 1) ! { dg-error "Assumed.type" } end subroutine ! Explicit-shape assumed-type actual arguments are forbidden implicitly ! by c407a (C709 in the 2018 standard). They're not allowed as dummy ! arguments, and assumed-type entities can only be declared as dummy ! arguments, so there is no other way to construct one to pass as an ! actual argument.