| ! 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 |