| ! RUN: %python %S/test_errors.py %s %flang_fc1 |
| ! Test ASSIGN statement, assigned GOTO, and assigned format labels |
| ! (see subclause 8.2.4 in Fortran 90 (*not* 2018!) |
| |
| program main |
| call test(0) |
| contains |
| subroutine test(n) |
| integer, intent(in) :: n |
| integer :: lab |
| integer(kind=1) :: badlab1 |
| real :: badlab2 |
| integer :: badlab3(1) |
| character, pointer :: badlab4(:) ! not contiguous |
| character, pointer, contiguous :: oklab4(:) |
| assign 1 to lab ! ok |
| assign 1 to implicitlab1 ! ok |
| !ERROR: 'badlab1' must be a default integer scalar variable |
| assign 1 to badlab1 |
| !ERROR: 'badlab2' must be a default integer scalar variable |
| assign 1 to badlab2 |
| !ERROR: 'badlab3' must be a default integer scalar variable |
| assign 1 to badlab3 |
| !ERROR: 'test' must be a default integer scalar variable |
| assign 1 to test |
| if (n==1) goto lab ! ok |
| if (n==1) goto implicitlab2 ! ok |
| !ERROR: 'badlab1' must be a default integer scalar variable |
| if (n==1) goto badlab1 |
| !ERROR: 'badlab2' must be a default integer scalar variable |
| if (n==1) goto badlab2 |
| !ERROR: 'badlab3' must be a default integer scalar variable |
| if (n==1) goto badlab3 |
| if (n==1) goto lab(1) ! ok |
| if (n==1) goto lab,(1) ! ok |
| if (n==1) goto lab(1,1) ! ok |
| assign 3 to lab ! ok |
| write(*,fmt=lab) ! ok |
| write(*,fmt=implicitlab3) ! ok |
| !ERROR: Format expression must be default character or default scalar integer |
| write(*,fmt=badlab1) |
| !ERROR: Format expression must be default character or default scalar integer |
| write(*,fmt=z'feedface') |
| !Legacy extension cases |
| write(*,fmt=badlab2) |
| write(*,fmt=badlab3) |
| !Array cases |
| write(*,fmt=badlab4) ! ok |
| write(*,fmt=badlab5) ! ok |
| 1 continue |
| 3 format('yes') |
| end subroutine test |
| end program |