| ! 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. | |
| 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 | |
| !___ standard-conforming statements ____________________________ | |
| error stop | |
| !___ standard-conforming statements with stop-code ______________ | |
| error stop int_code | |
| error stop 5 | |
| error stop (5) | |
| error stop ((5 + 8) * 2) | |
| error stop char_code | |
| error stop 'c' | |
| error stop ('c') | |
| error stop ('program failed') | |
| error stop int_array(1) | |
| error stop char_array(1) | |
| error stop int_coarray | |
| error stop int_coarray[1] | |
| error stop char_coarray | |
| error stop char_coarray[1] | |
| error stop array_coarray(1) | |
| error stop array_coarray(1)[1] | |
| !___ 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=logical_coarray[1] | |
| error stop int_code, quiet=.true. | |
| error stop (int_code), quiet=.false. | |
| !___ non-standard-conforming statements _________________________ | |
| ! unknown stop-code | |
| !ERROR: expected end of statement | |
| error stop code=int_code | |
| ! missing 'quiet=' | |
| !ERROR: expected end of statement | |
| error stop int_code, bool | |
| ! incorrect spelling for 'quiet=' | |
| !ERROR: expected end of statement | |
| error stop int_code, quiets=bool | |
| ! missing scalar-logical-expr for quiet= | |
| !ERROR: expected end of statement | |
| error stop int_code, quiet | |
| ! superfluous stop-code | |
| !ERROR: expected end of statement | |
| error stop int_code, char_code | |
| ! repeated quiet= | |
| !ERROR: expected end of statement | |
| error stop int_code, quiet=bool, quiet=.true. | |
| ! superfluous stop-code | |
| !ERROR: expected end of statement | |
| error stop int_code, char_code, quiet=bool | |
| ! superfluous integer | |
| !ERROR: expected end of statement | |
| error stop int_code, quiet=bool, 5 | |
| ! quiet= appears without stop-code | |
| !ERROR: expected end of statement | |
| error stop quiet=bool | |
| ! incorrect syntax | |
| !ERROR: expected end of statement | |
| error stop () | |
| ! incorrect syntax | |
| !ERROR: expected end of statement | |
| error stop (2, quiet=.true.) | |
| end program test_error_stop |