! { dg-do compile } ! { dg-options "-fcoarray=single" } ! ! LOCK_TYPE checks ! module m3 use iso_fortran_env type, extends(lock_type) :: lock integer :: j = 7 end type lock end module m3 use m3 type(lock_type) :: tl[*] = lock_type () type(lock) :: t[*] tl = lock_type () ! { dg-error "variable definition context" } print *,t%j end subroutine test() use iso_fortran_env type t type(lock_type) :: lock end type t type t2 type(t), pointer :: x ! { dg-error "Pointer component x at .1. has a noncoarray subcomponent of type LOCK_TYPE, which must have a codimension or be a subcomponent of a coarray" } end type t2 end subroutine test subroutine test2() use iso_fortran_env implicit none type t type(lock_type), allocatable :: lock ! { dg-error "Allocatable component lock at .1. of type LOCK_TYPE must have a codimension" } end type t type t2 type(lock_type) :: lock end type t2 type t3 type(t2), allocatable :: lock_cmp end type t3 type t4 integer, allocatable :: a[:] type(t2) :: b ! { dg-error "Noncoarray component b at .1. of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray. .Variables of type t4 may not have a codimension as already a coarray subcomponent exists." } end type t4 type t5 type(t2) :: c ! { dg-error "Noncoarray component c at .1. of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray. .Variables of type t5 may not have a codimension as d at .2. has a codimension or a coarray subcomponent." } integer, allocatable :: d[:] ! { dg-error "Noncoarray component c at .1. of type LOCK_TYPE or with subcomponent of type LOCK_TYPE must have a codimension or be a subcomponent of a coarray. .Variables of type t5 may not have a codimension as d at .2. has a codimension or a coarray subcomponent." } end type t5 end subroutine test2