| ! RUN: %python %S/test_errors.py %s %flang_fc1 |
| ! Check for semantic errors in this_image() function calls |
| |
| subroutine test |
| use, intrinsic :: iso_fortran_env, only: team_type |
| type(team_type) :: team |
| !ERROR: Coarray 'coteam' may not have type TEAM_TYPE, C_PTR, or C_FUNPTR |
| type(team_type) :: coteam[*] |
| integer :: coscalar[*], coarray(3)[*] |
| save :: coteam, coscalar, coarray |
| real, save :: coarray1[*], coarray2[2,*], coarray3[2,3,*] |
| integer indices(3) |
| |
| ! correct calls, should produce no errors |
| team = get_team() |
| print *, this_image() |
| print *, this_image(team) |
| print *, this_image(coarray) |
| print *, this_image(coarray, team) |
| print *, this_image(coarray, 1) |
| print *, this_image(coarray, 1, team) |
| print *, this_image(coarray(1)) |
| print *, this_image(coarray(1), team) |
| print *, this_image(coarray(1), 1) |
| print *, this_image(coarray(1), 1, team) |
| print *, this_image(coscalar) |
| print *, this_image(coscalar, team) |
| print *, this_image(coscalar, 1) |
| print *, this_image(coscalar, 1, team) |
| |
| !ERROR: 'coarray=' argument must have corank > 0 for intrinsic 'this_image' |
| print *, this_image(array,1) |
| |
| print *, team_number() |
| print *, team_number(team) |
| |
| indices(1:1) = this_image(coarray1) ! ok |
| indices(1:2) = this_image(coarray2) ! ok |
| indices(1:3) = this_image(coarray3) ! ok |
| !ERROR: Dimension 1 of left-hand side has extent 2, but right-hand side has extent 1 |
| indices(1:2) = this_image(coarray1) |
| !ERROR: Dimension 1 of left-hand side has extent 3, but right-hand side has extent 2 |
| indices(1:3) = this_image(coarray2) |
| !ERROR: Dimension 1 of left-hand side has extent 1, but right-hand side has extent 3 |
| indices(1:1) = this_image(coarray3) |
| |
| end subroutine |