[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:
parent
f8b71a307e
commit
21dceb3ca6
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue