Splitting up the tests for the synchronization statements, event statements, and error stop statement allow for some of the errors which are hidden by other errors, to be caught in the test. This then reveals which invalid code does produce errors and which does not produce errors.
83 lines
3.0 KiB
Fortran
83 lines
3.0 KiB
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1
|
|
! This test checks for semantic errors in event wait statements based on the
|
|
! statement specification in section 11.6.8 of the Fortran 2018 standard.
|
|
! Some of the errors in this test would be hidden by the errors in
|
|
! the test event02a.f90 if they were included in that file,
|
|
! and are thus tested here.
|
|
|
|
program test_event_wait
|
|
use iso_fortran_env, only : event_type
|
|
implicit none
|
|
|
|
! event_type variables must be coarrays
|
|
type(event_type) non_coarray
|
|
|
|
type(event_type) concert[*], occurrences(2)[*]
|
|
integer threshold, indexed(1), non_event[*], sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
|
|
character(len=128) error_message, non_scalar_char(1), co_indexed_character[*], superfluous_errmsg
|
|
logical invalid_type
|
|
|
|
!____________________ non-standard-conforming statements __________________________
|
|
|
|
!_________________________ invalid event-variable ________________________________
|
|
|
|
! event-variable must be event_type
|
|
event wait(non_event)
|
|
|
|
! event-variable must be a coarray
|
|
event wait(non_coarray)
|
|
|
|
! event-variable must not be coindexed
|
|
event wait(concert[1])
|
|
|
|
! event-variable must not be coindexed
|
|
event wait(occurrences(1)[1])
|
|
|
|
!ERROR: Must be a scalar value, but is a rank-1 array
|
|
event wait(occurrences)
|
|
|
|
!_____________ invalid event-wait-spec-lists: invalid until-spec _________________
|
|
|
|
!ERROR: Must have INTEGER type, but is LOGICAL(4)
|
|
event wait(concert, until_count=invalid_type)
|
|
|
|
!ERROR: Must be a scalar value, but is a rank-1 array
|
|
event wait(concert, until_count=non_scalar)
|
|
|
|
!_________________ invalid sync-stat-lists: invalid stat= ________________________
|
|
|
|
!ERROR: Must have INTEGER type, but is LOGICAL(4)
|
|
event wait(concert, stat=invalid_type)
|
|
|
|
!ERROR: Must be a scalar value, but is a rank-1 array
|
|
event wait(concert, stat=non_scalar)
|
|
|
|
!________________ invalid sync-stat-lists: invalid errmsg= _______________________
|
|
|
|
!ERROR: Must have CHARACTER type, but is LOGICAL(4)
|
|
event wait(concert, errmsg=invalid_type)
|
|
|
|
!ERROR: Must be a scalar value, but is a rank-1 array
|
|
event wait(concert, errmsg=non_scalar_char)
|
|
|
|
!______ invalid event-wait-spec-lists: redundant event-wait-spec-list ____________
|
|
|
|
! No specifier shall appear more than once in a given event-wait-spec-list
|
|
event wait(concert, until_count=threshold, until_count=indexed(1))
|
|
|
|
! No specifier shall appear more than once in a given event-wait-spec-list
|
|
event wait(concert, stat=sync_status, stat=superfluous_stat)
|
|
|
|
! No specifier shall appear more than once in a given event-wait-spec-list
|
|
event wait(concert, errmsg=error_message, errmsg=superfluous_errmsg)
|
|
|
|
!_____________ invalid sync-stat-lists: coindexed stat-variable __________________
|
|
|
|
! Check constraint C1173 from the Fortran 2018 standard
|
|
event wait(concert, stat=co_indexed_integer[1])
|
|
|
|
! Check constraint C1173 from the Fortran 2018 standard
|
|
event wait(concert, errmsg=co_indexed_character[1])
|
|
|
|
end program test_event_wait
|