!___ standard-conforming statements ____________________________
error stop
- !___ standard-conforming statement with stop-code ______________
+ !___ standard-conforming statements with stop-code ______________
error stop int_code
error stop 5
error stop (5)
error stop array_coarray(1)
error stop array_coarray(1)[1]
- !___ standard-conforming statement with stop-code and quiet= ___
+ !___ standard-conforming statements with stop-code and quiet= ___
error stop int_code, quiet=bool
error stop int_code, quiet=logical_array(1)
error stop int_code, quiet=logical_coarray
error stop int_code, quiet=.true.
error stop (int_code), quiet=.false.
- !___ non-standard-conforming statement _________________________
+ !___ non-standard-conforming statements _________________________
! unknown stop-code
!ERROR: expected execution part construct
error stop code=int_code
- ! invalid stop-code typing
- error stop non_integer
-
- ! invalid stop-code typing
- error stop non_character
-
- ! stop-code must be of default kind
- error stop non_default_int_kind
-
- ! stop-code must be of default kind
- error stop non_default_char_kind
-
- ! stop-code must be scalar
- error stop char_array
-
- ! stop-code must be scalar
- error stop array_coarray[1]
-
- ! invalid quiet= typing
- error stop int_code, quiet=non_logical
-
- ! quiet= must be scalar
- error stop int_code, quiet=logical_array
-
! missing 'quiet='
!ERROR: expected execution part construct
error stop int_code, bool
--- /dev/null
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for semantic errors in error stop statements based on the
+! statement specification in section 11.4 of the Fortran 2018 standard.
+! The errors in this test would be hidden by the errors in
+! the test error_stop01a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_error_stop
+ implicit none
+
+ integer int_code, int_array(1), int_coarray[*], array_coarray(1)[*]
+ integer(kind=1) non_default_int_kind
+ character(len=128) char_code, char_array(1), char_coarray[*], non_logical
+ character(kind=4, len=128) non_default_char_kind
+ logical bool, logical_array(1), logical_coarray[*], non_integer, non_character
+
+ !___ non-standard-conforming statements _________________________
+
+ !ERROR: Stop code must be of INTEGER or CHARACTER type
+ error stop non_integer
+
+ !ERROR: Stop code must be of INTEGER or CHARACTER type
+ error stop non_character
+
+ !ERROR: INTEGER stop code must be of default kind
+ error stop non_default_int_kind
+
+ !ERROR: CHARACTER stop code must be of default kind
+ error stop non_default_char_kind
+
+ !ERROR: Must be a scalar value, but is a rank-1 array
+ error stop char_array
+
+ !ERROR: Must be a scalar value, but is a rank-1 array
+ error stop array_coarray[1]
+
+ !ERROR: Must have LOGICAL type, but is CHARACTER(KIND=1,LEN=128_8)
+ error stop int_code, quiet=non_logical
+
+ !ERROR: Must be a scalar value, but is a rank-1 array
+ error stop int_code, quiet=logical_array
+
+end program test_error_stop
character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
logical invalid_type
- !___ standard-conforming statement ___
+ !___ standard-conforming statements ___
event post(concert)
event post(concert[1])
event post(concert, errmsg=error_message)
event post(concert, stat=sync_status, errmsg=error_message)
- !___ non-standard-conforming statement ___
+ !___ non-standard-conforming statements ___
!______ invalid event-variable ____________________________
- ! event-variable must be event_type
- event post(non_event)
-
- ! event-variable must be a coarray
- event post(non_coarray)
-
- ! event-variable must be a scalar variable
- event post(occurrences)
-
- ! event-variable must be a scalar variable
- event post(occurrences[1])
-
! event-variable has an unknown keyword argument
!ERROR: expected ')'
event post(event=concert)
!ERROR: expected ')'
event post(concert, status=sync_status)
- ! Stat-variable must an integer scalar
- event post(concert, stat=invalid_type)
-
- ! Stat-variable must an integer scalar
- event post(concert, stat=non_scalar)
-
! Invalid sync-stat-list: missing stat-variable
!ERROR: expected ')'
event post(concert, stat)
!ERROR: expected ')'
event post(concert, errormsg=error_message)
- ! Invalid errmsg-variable argument typing
- event post(concert, errmsg=invalid_type)
-
! Invalid sync-stat-list: missing 'errmsg='
!ERROR: expected ')'
event post(concert, error_message)
!ERROR: expected ')'
event post(concert, occurrences(1), stat=sync_status, errmsg=error_message)
- !______ invalid sync-stat-lists: redundant sync-stat-list ____________
-
- ! No specifier shall appear more than once in a given sync-stat-list
- event post(concert, stat=sync_status, stat=superfluous_stat)
-
- ! No specifier shall appear more than once in a given sync-stat-list
- event post(concert, errmsg=error_message, errmsg=superfluous_errmsg)
-
- !______ invalid sync-stat-lists: coindexed stat-variable ____________
-
- ! Check constraint C1173 from the Fortran 2018 standard
- event post(concert, stat=co_indexed_integer[1])
-
- ! Check constraint C1173 from the Fortran 2018 standard
- event post(concert, errmsg=co_indexed_character[1])
-
end program test_event_post
--- /dev/null
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for semantic errors in event post statements based on the
+! statement specification in section 11.6.7 of the Fortran 2018 standard.
+! Some of the errors in this test would be hidden by the errors in
+! the test event01a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_event_post
+ 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 non_event[*], sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
+ character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
+ logical invalid_type
+
+ !___ non-standard-conforming statements ___
+
+ !______ invalid event-variable ____________________________
+
+ ! event-variable must be event_type
+ event post(non_event)
+
+ ! event-variable must be a coarray
+ event post(non_coarray)
+
+ !ERROR: Must be a scalar value, but is a rank-1 array
+ event post(occurrences)
+
+ !ERROR: Must be a scalar value, but is a rank-1 array
+ event post(occurrences[1])
+
+ !______ invalid sync-stat-lists: invalid stat= ____________
+
+ !ERROR: Must have INTEGER type, but is LOGICAL(4)
+ event post(concert, stat=invalid_type)
+
+ !ERROR: Must be a scalar value, but is a rank-1 array
+ event post(concert, stat=non_scalar)
+
+ !______ invalid sync-stat-lists: invalid errmsg= ____________
+
+ !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+ event post(concert, errmsg=invalid_type)
+
+ !______ invalid sync-stat-lists: redundant sync-stat-list ____________
+
+ ! No specifier shall appear more than once in a given sync-stat-list
+ event post(concert, stat=sync_status, stat=superfluous_stat)
+
+ ! No specifier shall appear more than once in a given sync-stat-list
+ event post(concert, errmsg=error_message, errmsg=superfluous_errmsg)
+
+ !______ invalid sync-stat-lists: coindexed stat-variable ____________
+
+ ! Check constraint C1173 from the Fortran 2018 standard
+ event post(concert, stat=co_indexed_integer[1])
+
+ ! Check constraint C1173 from the Fortran 2018 standard
+ event post(concert, errmsg=co_indexed_character[1])
+
+end program test_event_post
character(len=128) error_message, non_scalar_char(1), co_indexed_character[*], superfluous_errmsg
logical invalid_type
- !_______________________ standard-conforming statement ___________________________
+ !_______________________ standard-conforming statements ___________________________
event wait(concert)
event wait(occurrences(1))
event wait(concert, stat=sync_status, errmsg=error_message)
event wait(concert, until_count=threshold, stat=sync_status, errmsg=error_message)
- !____________________ non-standard-conforming statement __________________________
+ !____________________ 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])
-
- ! event-variable must be a scalar variable
- event wait(occurrences)
-
! event-variable has an unknown expression
!ERROR: expected ')'
event wait(event=concert)
!ERROR: expected ')'
event wait(concert, until_amount=threshold)
- ! Until-spec must be an integer scalar
- event wait(concert, until_count=invalid_type)
-
- ! Until-spec must be an integer scalar
- event wait(concert, until_count=non_scalar)
-
! Invalid until-spec: missing until-spec variable
!ERROR: expected ')'
event wait(concert, until_count)
!ERROR: expected ')'
event wait(concert, status=sync_status)
- ! Stat-variable must be an integer scalar
- event wait(concert, stat=invalid_type)
-
- ! Stat-variable must be an integer scalar
- event wait(concert, stat=non_scalar)
-
! Invalid sync-stat-list: missing stat-variable
!ERROR: expected ')'
event wait(concert, stat)
!ERROR: expected ')'
event wait(concert, errormsg=error_message)
- ! Errmsg-variable must be a character scalar
- event wait(concert, errmsg=invalid_type)
-
- ! Errmsg-variable must be a character scalar
- event wait(concert, errmsg=non_scalar_char)
-
! Invalid sync-stat-list: missing 'errmsg='
!ERROR: expected ')'
event wait(concert, error_message)
!ERROR: expected ')'
event wait(concert, occurrences(1), stat=sync_status, errmsg=error_message)
- !______ 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
--- /dev/null
+! 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
+++ /dev/null
-! RUN: %python %S/test_errors.py %s %flang_fc1
-! XFAIL: *
-! This test checks for semantic errors in sync all statements based on the
-! statement specification in section 11.6.3 of the Fortran 2018 standard.
-
-program test_sync_all
- implicit none
-
- integer sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
- character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
- logical invalid_type
-
- !___ standard-conforming statement ___
-
- sync all
- sync all(stat=sync_status)
- sync all( errmsg=error_message)
- sync all(stat=sync_status, errmsg=error_message)
-
- !___ non-standard-conforming statement ___
-
- !______ invalid sync-stat-lists: invalid stat= ____________
-
- !ERROR: expected execution part construct
- sync all(status=sync_status)
-
- ! Stat-variable must an integer scalar
- !ERROR: TBD
- sync all(stat=invalid_type)
-
- ! Stat-variable must an integer scalar
- !ERROR: TBD
- sync all(stat=non_scalar)
-
- ! Invalid sync-stat-list: missing stat-variable
- !ERROR: expected execution part construct
- sync all(stat)
-
- ! Invalid sync-stat-list: missing 'stat='
- !ERROR: expected execution part construct
- sync all(sync_status)
-
- !______ invalid sync-stat-lists: invalid errmsg= ____________
-
- ! Invalid errmsg-variable keyword
- !ERROR: expected execution part construct
- sync all(errormsg=error_message)
-
- !ERROR: TBD
- sync all(errmsg=invalid_type)
-
- ! Invalid sync-stat-list: missing 'errmsg='
- !ERROR: expected execution part construct
- sync all(error_message)
-
- ! Invalid sync-stat-list: missing errmsg-variable
- !ERROR: expected execution part construct
- sync all(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 all(stat=sync_status, stat=superfluous_stat)
-
- ! No specifier shall appear more than once in a given sync-stat-list
- !ERROR: to be determined
- sync all(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 all(stat=co_indexed_integer[1])
-
- ! Check constraint C1173 from the Fortran 2018 standard
- !ERROR: to be determined
- sync all(errmsg=co_indexed_character[1])
-
-end program test_sync_all
--- /dev/null
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for errors in sync all statements based on the
+! statement specification in section 11.6.3 of the Fortran 2018 standard.
+
+program test_sync_all
+ implicit none
+
+ integer sync_status
+ character(len=128) error_message
+
+ !___ standard-conforming statement ___
+
+ sync all
+ sync all()
+ sync all(stat=sync_status)
+ sync all( errmsg=error_message)
+ sync all(stat=sync_status, errmsg=error_message)
+
+ !___ non-standard-conforming statement ___
+
+ !______ invalid sync-stat-lists: invalid stat= ____________
+
+ !ERROR: expected execution part construct
+ sync all(status=sync_status)
+
+ ! Invalid sync-stat-list: missing stat-variable
+ !ERROR: expected execution part construct
+ sync all(stat)
+
+ ! Invalid sync-stat-list: missing 'stat='
+ !ERROR: expected execution part construct
+ sync all(sync_status)
+
+ !______ invalid sync-stat-lists: invalid errmsg= ____________
+
+ ! Invalid errmsg-variable keyword
+ !ERROR: expected execution part construct
+ sync all(errormsg=error_message)
+
+ ! Invalid sync-stat-list: missing 'errmsg='
+ !ERROR: expected execution part construct
+ sync all(error_message)
+
+ ! Invalid sync-stat-list: missing errmsg-variable
+ !ERROR: expected execution part construct
+ sync all(errmsg)
+
+end program test_sync_all
--- /dev/null
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for semantic errors in sync all statements.
+! Some of the errors in this test would be hidden by the errors in
+! the test synchronization01a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_sync_all
+ implicit none
+
+ integer sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
+ character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
+ logical invalid_type
+
+ !___ non-standard-conforming statements ___
+
+ !ERROR: Must have INTEGER type, but is LOGICAL(4)
+ sync all(stat=invalid_type)
+
+ !ERROR: Must be a scalar value, but is a rank-1 array
+ sync all(stat=non_scalar)
+
+ !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+ sync all(errmsg=invalid_type)
+
+ ! No specifier shall appear more than once in a given sync-stat-list
+ sync all(stat=sync_status, stat=superfluous_stat)
+
+ ! No specifier shall appear more than once in a given sync-stat-list
+ sync all(errmsg=error_message, errmsg=superfluous_errmsg)
+
+ ! Fortran 2018 standard C1173: `stat` shall not be coindexed
+ sync all(stat=co_indexed_integer[1])
+
+ ! Fortran 2018 standard C1173: `errmsg` shall not be coindexed
+ sync all(errmsg=co_indexed_character[1])
+
+end program test_sync_all
! RUN: %python %S/test_errors.py %s %flang_fc1
-! XFAIL: *
-! Check for semantic errors in sync images statements
+! Check for errors in sync images statements
program test_sync_images
implicit none
- integer, parameter :: invalid_rank(*,*) = reshape([1], [1,1])
- integer sync_status, non_scalar(2), superfluous_stat, coindexed_integer[*], me
- character(len=128) error_message, superfluous_errmsg, coindexed_character[*]
- logical invalid_type
-
+ integer sync_status, me
+ character(len=128) error_message
+
!___ standard-conforming statement ___
sync images(*, stat=sync_status, errmsg=error_message)
!___ non-standard-conforming statement ___
- !______ invalid image sets ______
-
- ! Image set shall not depend on the value of stat-variable
- !ERROR: TBD
- sync images(sync_status, stat=sync_status)
-
- ! Image set shall not depend on the value of errmsg-variable
- !ERROR: TBD
- sync images(len(error_message), errmsg=error_message)
+ !ERROR: expected '('
+ sync images
- ! Image set shall be a scalar or rank-1 array
- !ERROR: TBD
- sync images(invalid_rank)
-
!______ invalid sync-stat-lists: invalid stat= ____________
! Invalid sync-stat-list keyword
!ERROR: expected ')'
sync images(1, status=sync_status)
- !ERROR: TBD
- sync images([1], stat=invalid_type)
-
- ! Stat-variable must an integer scalar
- !ERROR: TBD
- sync images(*, stat=non_scalar)
-
! Invalid sync-stat-list: missing stat-variable
!ERROR: expected ')'
sync images(1, stat)
!ERROR: expected ')'
sync images(*, errormsg=error_message)
- !ERROR: TBD
- sync images(1, errmsg=invalid_type)
-
! Invalid sync-stat-list: missing 'errmsg='
!ERROR: expected ')'
sync images([1], error_message)
!ERROR: expected ')'
sync images(*, 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 images(1, stat=sync_status, stat=superfluous_stat)
-
- ! No specifier shall appear more than once in a given sync-stat-list
- !ERROR: to be determined
- sync images([1], 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 images(*, stat=coindexed_integer[1])
-
- ! Check constraint C1173 from the Fortran 2018 standard
- !ERROR: to be determined
- sync images(1, errmsg=coindexed_character[1])
-
end program test_sync_images
--- /dev/null
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! Check for semantic errors in sync images statements.
+! Some of the errors in this test would be hidden by the errors in
+! the test synchronization02a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_sync_images
+ implicit none
+
+ integer, parameter :: invalid_rank(*,*) = reshape([1], [1,1])
+ integer sync_status, non_scalar(2), superfluous_stat, coindexed_integer[*]
+ character(len=128) error_message, superfluous_errmsg, coindexed_character[*]
+ logical invalid_type
+
+ !___ non-standard-conforming statements ___
+
+ ! Image set shall not depend on the value of stat-variable
+ sync images(sync_status, stat=sync_status)
+
+ ! Image set shall not depend on the value of errmsg-variable
+ sync images(len(error_message), errmsg=error_message)
+
+ ! Image set shall be a scalar or rank-1 array
+ sync images(invalid_rank)
+
+ !ERROR: Must have INTEGER type, but is LOGICAL(4)
+ sync images([1], stat=invalid_type)
+
+ !ERROR: Must be a scalar value, but is a rank-1 array
+ sync images(*, stat=non_scalar)
+
+ !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+ sync images(1, errmsg=invalid_type)
+
+ ! No specifier shall appear more than once in a given sync-stat-list
+ sync images(1, stat=sync_status, stat=superfluous_stat)
+
+ ! No specifier shall appear more than once in a given sync-stat-list
+ sync images([1], errmsg=error_message, errmsg=superfluous_errmsg)
+
+ ! Fortran 2018 standard C1173: `stat` shall not be coindexed
+ sync images(*, stat=coindexed_integer[1])
+
+ ! Fortran 2018 standard C1173: `errmsg` shall not be coindexed
+ sync images(1, errmsg=coindexed_character[1])
+
+end program test_sync_images
+++ /dev/null
-! RUN: %python %S/test_errors.py %s %flang_fc1
-! XFAIL: *
-! This test checks for semantic errors in sync memory statements based on the
-! statement specification in section 11.6.5 of the Fortran 2018 standard.
-
-program test_sync_memory
- implicit none
-
- integer sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
- character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
- logical invalid_type
-
- !___ standard-conforming statement ___
-
- sync memory
- sync memory(stat=sync_status)
- sync memory( errmsg=error_message)
- sync memory(stat=sync_status, errmsg=error_message)
-
- !___ non-standard-conforming statement ___
-
- !______ invalid sync-stat-lists: invalid stat= ____________
-
- !ERROR: expected execution part construct
- sync memory(status=sync_status)
-
- ! Stat-variable must an integer scalar
- !ERROR: TBD
- sync memory(stat=invalid_type)
-
- ! Stat-variable must an integer scalar
- !ERROR: TBD
- sync memory(stat=non_scalar)
-
- ! Invalid sync-stat-list: missing stat-variable
- !ERROR: expected execution part construct
- sync memory(stat)
-
- ! Invalid sync-stat-list: missing 'stat='
- !ERROR: expected execution part construct
- sync memory(sync_status)
-
- !______ invalid sync-stat-lists: invalid errmsg= ____________
-
- ! Invalid errmsg-variable keyword
- !ERROR: expected execution part construct
- sync memory(errormsg=error_message)
-
- !ERROR: TBD
- sync memory(errmsg=invalid_type)
-
- ! Invalid sync-stat-list: missing 'errmsg='
- !ERROR: expected execution part construct
- sync memory(error_message)
-
- ! Invalid sync-stat-list: missing errmsg-variable
- !ERROR: expected execution part construct
- sync memory(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 memory(stat=sync_status, stat=superfluous_stat)
-
- ! No specifier shall appear more than once in a given sync-stat-list
- !ERROR: to be determined
- sync memory(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 memory(stat=co_indexed_integer[1])
-
- ! Check constraint C1173 from the Fortran 2018 standard
- !ERROR: to be determined
- sync memory(errmsg=co_indexed_character[1])
-
-end program test_sync_memory
--- /dev/null
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for errors in sync memory statements based on the
+! statement specification in section 11.6.5 of the Fortran 2018 standard.
+
+program test_sync_memory
+ implicit none
+
+ integer sync_status
+ character(len=128) error_message
+
+ !___ standard-conforming statements ___
+
+ sync memory
+ sync memory()
+ sync memory(stat=sync_status)
+ sync memory( errmsg=error_message)
+ sync memory(stat=sync_status, errmsg=error_message)
+
+ !___ non-standard-conforming statements ___
+
+ !______ invalid sync-stat-lists: invalid stat= ____________
+
+ !ERROR: expected execution part construct
+ sync memory(status=sync_status)
+
+ ! Invalid sync-stat-list: missing stat-variable
+ !ERROR: expected execution part construct
+ sync memory(stat)
+
+ ! Invalid sync-stat-list: missing 'stat='
+ !ERROR: expected execution part construct
+ sync memory(sync_status)
+
+ !______ invalid sync-stat-lists: invalid errmsg= ____________
+
+ ! Invalid errmsg-variable keyword
+ !ERROR: expected execution part construct
+ sync memory(errormsg=error_message)
+
+ ! Invalid sync-stat-list: missing 'errmsg='
+ !ERROR: expected execution part construct
+ sync memory(error_message)
+
+ ! Invalid sync-stat-list: missing errmsg-variable
+ !ERROR: expected execution part construct
+ sync memory(errmsg)
+
+end program test_sync_memory
--- /dev/null
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for semantic errors in sync memory statements.
+! Some of the errors in this test would be hidden by the errors in
+! the test synchronization03a.f90 if they were included in that file,
+! and are thus tested here.
+
+program test_sync_memory
+ implicit none
+
+ integer sync_status, co_indexed_integer[*], superfluous_stat, non_scalar(1)
+ character(len=128) error_message, co_indexed_character[*], superfluous_errmsg
+ logical invalid_type
+
+ !___ non-standard-conforming statements ___
+
+ !ERROR: Must have INTEGER type, but is LOGICAL(4)
+ sync memory(stat=invalid_type)
+
+ !ERROR: Must be a scalar value, but is a rank-1 array
+ sync memory(stat=non_scalar)
+
+ !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+ sync memory(errmsg=invalid_type)
+
+ ! No specifier shall appear more than once in a given sync-stat-list
+ sync memory(stat=sync_status, stat=superfluous_stat)
+
+ ! No specifier shall appear more than once in a given sync-stat-list
+ sync memory(errmsg=error_message, errmsg=superfluous_errmsg)
+
+ ! Fortran 2018 standard C1173: `stat` shall not be coindexed
+ sync memory(stat=co_indexed_integer[1])
+
+ ! Fortran 2018 standard C1173: `errmsg` shall not be coindexed
+ sync memory(errmsg=co_indexed_character[1])
+
+end program test_sync_memory
+++ /dev/null
-! 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
--- /dev/null
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for 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
+ character(len=128) error_message
+ 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 team-value _____________________
+
+ !ERROR: expected '('
+ sync 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)
+
+ ! 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)
+
+ ! 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)
+
+end program test_sync_team
--- /dev/null
+! RUN: %python %S/test_errors.py %s %flang_fc1
+! This test checks for semantic errors in sync team statements.
+! Some of the errors in this test would be hidden by the errors in
+! the test synchronization04a.f90 if they were included in that file,
+! and are thus tested here.
+
+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
+
+ !___ non-standard-conforming statements ___
+
+ !ERROR: Team value must be of type TEAM_TYPE from module ISO_FORTRAN_ENV
+ sync team(not_a_team)
+
+ !ERROR: Must have INTEGER type, but is LOGICAL(4)
+ sync team(warriors, stat=invalid_type)
+
+ !ERROR: Must be a scalar value, but is a rank-1 array
+ sync team(warriors, stat=non_scalar)
+
+ !ERROR: Must have CHARACTER type, but is LOGICAL(4)
+ sync team(warriors, errmsg=invalid_type)
+
+ ! No specifier shall appear more than once in a given sync-stat-list
+ sync team(warriors, stat=sync_status, stat=superfluous_stat)
+
+ ! No specifier shall appear more than once in a given sync-stat-list
+ sync team(warriors, errmsg=error_message, errmsg=superfluous_errmsg)
+
+ ! Fortran 2018 standard C1173: `stat` shall not be coindexed
+ sync team(warriors, stat=co_indexed_integer[1])
+
+ ! Fortran 2018 standard C1173: `errmsg` shall not be coindexed
+ sync team(warriors, errmsg=co_indexed_character[1])
+
+end program test_sync_team