Skip to content

Commit

Permalink
[flang] add semantics tests for sync team
Browse files Browse the repository at this point in the history
Test a range of acceptable forms of SYNC TEAM statements,
including combinations with and without the stat-variable
and errmsg-variable present.  Also test that several invalid
forms of SYNC TEAM call generate the correct error messages.

Differential Revision: https://reviews.llvm.org/D120099
  • Loading branch information
rouson committed Feb 24, 2022
1 parent ca6fa71 commit f3c9a52
Showing 1 changed file with 91 additions and 0 deletions.
91 changes: 91 additions & 0 deletions flang/test/Semantics/synchronization04.f90
@@ -0,0 +1,91 @@
! RUN: %python %S/test_errors.py %s %flang_fc1
! XFAIL: *
! This test checks for semantic errors in sync team statements based on the
! statement specification in section 11.6.6 of the Fortran 2018 standard.

program test_sync_team
use iso_fortran_env, only : team_type
implicit none

integer sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1), not_a_team
character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
logical invalid_type
type(team_type) warriors


!___ standard-conforming statement ___

sync team(warriors)
sync team(warriors, stat=sync_status)
sync team(warriors, errmsg=error_message)
sync team(warriors, stat=sync_status, errmsg=error_message)

!___ non-standard-conforming statement ___

!______ missing or invalid team-value _____________________

!ERROR: TBD
sync team(not_a_team)

!ERROR: expected ')'
sync team(stat=sync_status, errmsg=error_message)

!______ invalid sync-stat-lists: invalid stat= ____________

!ERROR: expected ')'
sync team(warriors, status=sync_status)

! Stat-variable must an integer scalar
!ERROR: TBD
sync team(warriors, stat=invalid_type)

! Stat-variable must an integer scalar
!ERROR: TBD
sync team(warriors, stat=non_scalar)

! Invalid sync-stat-list: missing stat-variable
!ERROR: expected ')'
sync team(warriors, stat)

! Invalid sync-stat-list: missing 'stat='
!ERROR: expected ')'
sync team(warriors, sync_status)

!______ invalid sync-stat-lists: invalid errmsg= ____________

! Invalid errmsg-variable keyword
!ERROR: expected ')'
sync team(warriors, errormsg=error_message)

!ERROR: TBD
sync team(warriors, errmsg=invalid_type)

! Invalid sync-stat-list: missing 'errmsg='
!ERROR: expected ')'
sync team(warriors, error_message)

! Invalid sync-stat-list: missing errmsg-variable
!ERROR: expected ')'
sync team(warriors, errmsg)

!______ invalid sync-stat-lists: redundant sync-stat-list ____________

! No specifier shall appear more than once in a given sync-stat-list
!ERROR: to be determined
sync team(warriors, stat=sync_status, stat=superfluous_stat)

! No specifier shall appear more than once in a given sync-stat-list
!ERROR: to be determined
sync team(warriors, errmsg=error_message, errmsg=superfluous_errmsg)

!______ invalid sync-stat-lists: coindexed stat-variable ____________

! Check constraint C1173 from the Fortran 2018 standard
!ERROR: to be determined
sync team(warriors, stat=co_indexed_integer[1])

! Check constraint C1173 from the Fortran 2018 standard
!ERROR: to be determined
sync team(warriors, errmsg=co_indexed_character[1])

end program test_sync_team

0 comments on commit f3c9a52

Please sign in to comment.