1*37221030SHussain Kadhem! RUN: %python %S/test_errors.py %s %flang_fc1 2*37221030SHussain Kadhem! Check for semantic errors in change team statements. 3*37221030SHussain Kadhem! Only those semantics which differ from those of FORM TEAM statements are checked. 4*37221030SHussain Kadhem 5*37221030SHussain Kadhemsubroutine test 6*37221030SHussain Kadhem use, intrinsic :: iso_fortran_env, only: team_type 7*37221030SHussain Kadhem type(team_type) :: team 8*37221030SHussain Kadhem integer, codimension[*] :: selector 9*37221030SHussain Kadhem integer, codimension[2,*] :: selector2d 10*37221030SHussain Kadhem 11*37221030SHussain Kadhem ! Valid invocations which should produce no errors. 12*37221030SHussain Kadhem block 13*37221030SHussain Kadhem change team (team) 14*37221030SHussain Kadhem end team 15*37221030SHussain Kadhem construct1: change team (team) 16*37221030SHussain Kadhem end team construct1 17*37221030SHussain Kadhem change team (team, ca[*] => selector) 18*37221030SHussain Kadhem end team 19*37221030SHussain Kadhem change team (team, ca[2,*] => selector) 20*37221030SHussain Kadhem end team 21*37221030SHussain Kadhem change team (team, ca[*] => selector) 22*37221030SHussain Kadhem end team 23*37221030SHussain Kadhem change team (team, ca[*] => selector, ca2[2,*] => selector2d) 24*37221030SHussain Kadhem end team 25*37221030SHussain Kadhem end block 26*37221030SHussain Kadhem 27*37221030SHussain Kadhem !A selector may appear only once in selector-list. 28*37221030SHussain Kadhem ! ERROR: Selector 'selector' was already used as a selector or coarray in this statement 29*37221030SHussain Kadhem change team (team, ca[*] => selector, ca2[*] => selector) 30*37221030SHussain Kadhem end team 31*37221030SHussain Kadhem 32*37221030SHussain Kadhem ! Within a CHANGE TEAM construct, a CYCLE or EXIT statement is not allowed if it belongs to an outer construct. 33*37221030SHussain Kadhem block 34*37221030SHussain Kadhem outer1: if (.true.) then 35*37221030SHussain Kadhem change team (team) 36*37221030SHussain Kadhem if (.true.) then 37*37221030SHussain Kadhem ! ERROR: EXIT must not leave a CHANGE TEAM statement 38*37221030SHussain Kadhem exit outer1 39*37221030SHussain Kadhem end if 40*37221030SHussain Kadhem end team 41*37221030SHussain Kadhem end if outer1 42*37221030SHussain Kadhem end block 43*37221030SHussain Kadhem block 44*37221030SHussain Kadhem outer2: do 45*37221030SHussain Kadhem change team (team) 46*37221030SHussain Kadhem ! ERROR: CYCLE must not leave a CHANGE TEAM statement 47*37221030SHussain Kadhem cycle outer2 48*37221030SHussain Kadhem end team 49*37221030SHussain Kadhem end do outer2 50*37221030SHussain Kadhem end block 51*37221030SHussain Kadhem 52*37221030SHussain Kadhem ! The construct name must not be the same as any other construct name in the scoping unit. 53*37221030SHussain Kadhem block 54*37221030SHussain Kadhem construct2: block 55*37221030SHussain Kadhem end block construct2 56*37221030SHussain Kadhem ! ERROR: 'construct2' is already declared in this scoping unit 57*37221030SHussain Kadhem construct2: change team (team) 58*37221030SHussain Kadhem end team construct2 59*37221030SHussain Kadhem end block 60*37221030SHussain Kadhem 61*37221030SHussain Kadhem ! When the CHANGE TEAM statement is executed, the selectors must all be established coarrays. 62*37221030SHussain Kadhem ! ERROR: Selector in coarray association must name a coarray 63*37221030SHussain Kadhem change team (team, ca[*] => not_selector) 64*37221030SHussain Kadhem end team 65*37221030SHussain Kadhem 66*37221030SHussain Kadhem ! The coarray name in a coarray-association must not be the same as the name as the name of another coarray or of a selector in the CHANGE TEAM statement. 67*37221030SHussain Kadhem ! ERROR: 'selector' is not an object that can appear in an expression 68*37221030SHussain Kadhem change team (team, selector[*] => selector) 69*37221030SHussain Kadhem end team 70*37221030SHussain Kadhemend subroutine 71