! RUN: %S/test_errors.sh %s %t %f18 !C1118 subroutine test1 critical !ERROR: RETURN statement is not allowed in a CRITICAL construct return end critical end subroutine test1 subroutine test2() implicit none critical !ERROR: An image control statement is not allowed in a CRITICAL construct SYNC ALL end critical end subroutine test2 subroutine test3() use iso_fortran_env, only: team_type implicit none type(team_type) :: j critical !ERROR: An image control statement is not allowed in a CRITICAL construct sync team (j) end critical end subroutine test3 subroutine test4() integer, allocatable, codimension[:] :: ca critical !ERROR: An image control statement is not allowed in a CRITICAL construct allocate(ca[*]) end critical critical !ERROR: An image control statement is not allowed in a CRITICAL construct deallocate(ca) end critical end subroutine test4 subroutine test5() use iso_fortran_env, only: team_type implicit none type(team_type) :: j critical change team (j) !ERROR: An image control statement is not allowed in a CRITICAL construct end team end critical end subroutine test5 subroutine test6 critical critical !ERROR: An image control statement is not allowed in a CRITICAL construct end critical end critical end subroutine test6 subroutine test7() use iso_fortran_env type(event_type) :: x, y critical !ERROR: An image control statement is not allowed in a CRITICAL construct event post (x) !ERROR: An image control statement is not allowed in a CRITICAL construct event wait (y) end critical end subroutine test7 subroutine test8() use iso_fortran_env type(team_type) :: t critical !ERROR: An image control statement is not allowed in a CRITICAL construct form team(1, t) end critical end subroutine test8 subroutine test9() use iso_fortran_env type(lock_type) :: l critical !ERROR: An image control statement is not allowed in a CRITICAL construct lock(l) !ERROR: An image control statement is not allowed in a CRITICAL construct unlock(l) end critical end subroutine test9 subroutine test10() use iso_fortran_env integer, allocatable, codimension[:] :: ca allocate(ca[*]) critical block integer, allocatable, codimension[:] :: cb cb = ca !TODO: Deallocation of this coarray is not currently caught end block end critical end subroutine test10 subroutine test11() integer, allocatable, codimension[:] :: ca, cb critical !ERROR: An image control statement is not allowed in a CRITICAL construct call move_alloc(cb, ca) end critical end subroutine test11 subroutine test12() critical !ERROR: An image control statement is not allowed in a CRITICAL construct stop end critical end subroutine test12