[flang] Split up synchronization, event, and error stop stmt tests

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.
This commit is contained in:
Katherine Rasmussen 2022-08-17 17:06:28 -07:00
parent f8b71a307e
commit 21dceb3ca6
17 changed files with 519 additions and 421 deletions

View File

@ -14,7 +14,7 @@ program test_error_stop
!___ 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)
@ -32,7 +32,7 @@ program test_error_stop
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
@ -40,36 +40,12 @@ program test_error_stop
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

View File

@ -0,0 +1,43 @@
! 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

View File

@ -14,7 +14,7 @@ program test_event_post
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])
@ -24,22 +24,10 @@ program test_event_post
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)
@ -50,12 +38,6 @@ program test_event_post
!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)
@ -70,9 +52,6 @@ program test_event_post
!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)
@ -91,20 +70,4 @@ program test_event_post
!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

View File

@ -0,0 +1,65 @@
! 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

View File

@ -14,7 +14,7 @@ program test_event_wait
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))
@ -28,25 +28,10 @@ program test_event_wait
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)
@ -57,12 +42,6 @@ program test_event_wait
!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)
@ -77,12 +56,6 @@ program test_event_wait
!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)
@ -97,12 +70,6 @@ program test_event_wait
!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)
@ -119,23 +86,4 @@ program test_event_wait
!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

View File

@ -0,0 +1,82 @@
! 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

View File

@ -1,80 +0,0 @@
! 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

View File

@ -0,0 +1,48 @@
! 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

View File

@ -0,0 +1,37 @@
! 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

View File

@ -1,15 +1,12 @@
! 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)
@ -31,33 +28,15 @@ program test_sync_images
!___ non-standard-conforming statement ___
!______ invalid image sets ______
!ERROR: expected '('
sync images
! 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)
! 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)
@ -72,9 +51,6 @@ program test_sync_images
!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)
@ -83,24 +59,4 @@ program test_sync_images
!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

View File

@ -0,0 +1,47 @@
! 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

View File

@ -1,80 +0,0 @@
! 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

View File

@ -0,0 +1,48 @@
! 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

View File

@ -0,0 +1,37 @@
! 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

View File

@ -1,91 +0,0 @@
! 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

View File

@ -0,0 +1,57 @@
! 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

View File

@ -0,0 +1,42 @@
! 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