! { dg-do compile } ! { dg-options "-fcoarray=single" } ! ! type t end type t type t2 end type t2 contains elemental subroutine foo0(v) ! OK class(t), intent(in) :: v end subroutine elemental subroutine foo1(w) ! { dg-error "Argument 'w' of elemental procedure at .1. cannot have the ALLOCATABLE attribute" } class(t), allocatable, intent(in) :: w end subroutine elemental subroutine foo2(x) ! { dg-error "Argument 'x' of elemental procedure at .1. cannot have the POINTER attribute" } class(t), pointer, intent(in) :: x end subroutine elemental subroutine foo3(y) ! { dg-error "Coarray dummy argument 'y' at .1. to elemental procedure" } class(t2), intent(in) :: y[*] end subroutine elemental subroutine foo4(z) ! { dg-error "Argument 'z' of elemental procedure at .1. must be scalar" } class(t), intent(in) :: z(:) end subroutine end