! { dg-do compile } ! { dg-options "-fcoarray=single" } ! subroutine cont1(x) ! { dg-error "has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape or assumed-rank array" } type t end type t class(t), contiguous, allocatable :: x(:) end subroutine cont2(x) ! { dg-error "has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape or assumed-rank array" } type t end type t class(t), contiguous, allocatable :: x(:)[:] end subroutine cont3(x, y) type t end type t class(t), contiguous, pointer :: x(:) class(t), contiguous :: y(:) end function func() ! { dg-error "shall not be a coarray or have a coarray component" } type t end type t class(t), allocatable :: func[*] end function func2() ! { dg-error "must be dummy, allocatable or pointer" } type t integer, allocatable :: caf[:] end type t class(t) :: func2a ! { dg-error "CLASS variable 'func2a' at .1. must be dummy, allocatable or pointer" } class(t) :: func2 end subroutine foo1(x1) ! { dg-error "Coarray variable 'x1' at .1. shall not have codimensions with deferred shape" } type t end type t type(t) :: x1(:)[:] end subroutine foo2(x2) ! { dg-error "Coarray variable 'x2' at .1. shall not have codimensions with deferred shape" } type t end type t type(t) :: x2[:] end ! DITTO FOR CLASS subroutine foo3(x1) ! { dg-error "Coarray variable 'x1' at .1. shall not have codimensions with deferred shape" } type t end type t class(t) :: x1(:)[:] end subroutine foo4(x2) ! { dg-error "Coarray variable 'x2' at .1. shall not have codimensions with deferred shape" } type t end type t class(t) :: x2[:] end subroutine bar1(y1) ! { dg-error "Allocatable coarray variable 'y1' at .1. must have deferred shape" } type t end type t type(t), allocatable :: y1(:)[5:*] end subroutine bar2(y2) ! { dg-error "Allocatable coarray variable 'y2' at .1. must have deferred shape" } type t end type t type(t), allocatable :: y2[5:*] end subroutine bar3(z1) ! { dg-error "Allocatable coarray variable 'z1' at .1. must have deferred shape" } type t end type t type(t), allocatable :: z1(5)[:] end subroutine bar4(z2) ! { dg-error "Allocatable array 'z2' at .1. must have a deferred shape" } type t end type t type(t), allocatable :: z2(5) end subroutine bar4 subroutine bar5(z3) ! { dg-error "Array pointer 'z3' at .1. must have a deferred shape" } type t end type t type(t), pointer :: z3(5) end subroutine bar5 ! DITTO FOR CLASS subroutine bar1c(y1) ! { dg-error "Allocatable coarray variable 'y1' at .1. must have deferred shape" } type t end type t class(t), allocatable :: y1(:)[5:*] end subroutine bar2c(y2) ! { dg-error "Allocatable coarray variable 'y2' at .1. must have deferred shape" } type t end type t class(t), allocatable :: y2[5:*] end subroutine bar3c(z1) ! { dg-error "Allocatable coarray variable 'z1' at .1. must have deferred shape" } type t end type t class(t), allocatable :: z1(5)[:] end subroutine bar4c(z2) ! { dg-error "Allocatable array 'z2' at .1. must have a deferred shape" } type t end type t class(t), allocatable :: z2(5) end subroutine bar4c subroutine bar5c(z3) ! { dg-error "Array pointer 'z3' at .1. must have a deferred shape" } type t end type t class(t), pointer :: z3(5) end subroutine bar5c subroutine sub() type t end type type(t) :: a(5) class(t), allocatable :: b(:) call inter(a) call inter(b) contains subroutine inter(x) class(t) :: x(5) end subroutine inter end subroutine sub subroutine sub2() type t end type type(t) :: a(5) contains subroutine inter(x) class(t) :: x(5) end subroutine inter end subroutine sub2 subroutine sub3() type t end type contains subroutine inter2(x) ! { dg-error "must have a deferred shape" } class(t), pointer :: x(5) end subroutine inter2 end subroutine sub3