! { dg-do compile } ! { dg-options "-fcoarray=single" } ! ! Coarray declaration constraint checks ! function foo3a() result(res) implicit none integer :: res codimension :: res[*] ! { dg-error "CODIMENSION attribute conflicts with RESULT" } end function foo2a() result(res) integer :: res[*] ! { dg-error "CODIMENSION attribute conflicts with RESULT" } end function fooa() result(res) ! { dg-error "shall not be a coarray or have a coarray component" } implicit none type t integer, allocatable :: A[:] end type t type(t):: res end function foo3() ! { dg-error "shall not be a coarray or have a coarray component" } implicit none integer :: foo3 codimension :: foo3[*] end function foo2() ! { dg-error "shall not be a coarray or have a coarray component" } implicit none integer :: foo2[*] end function foo() ! { dg-error "shall not be a coarray or have a coarray component" } type t integer, allocatable :: A[:] end type t type(t):: foo end subroutine test() use iso_c_binding implicit none type(c_ptr), save :: caf[*] ! { dg-error "shall not be a coarray" } end subroutine test subroutine test2() use iso_c_binding implicit none type(c_funptr), save :: caf[*] ! { dg-error "shall not be a coarray" } end subroutine test2