| ! RUN: %python %S/test_errors.py %s %flang_fc1 |
| program main |
| implicit none |
| contains |
| subroutine good(x, y, z, dim_a, scalar1, scalar2) |
| integer :: dim_a(1) |
| !valid cases |
| !simple rank-1 integer array reference |
| ! ERROR: not yet implemented: Analyze overload for AssumedShapeBoundsSpec |
| integer :: x(dim_a:) |
| !rank-1 integer array + scalar = rank-1 integer array |
| ! ERROR: not yet implemented: Analyze overload for AssumedShapeBoundsSpec |
| integer :: y(dim_a + 2:) |
| !rank-1 integer array via array constructor literal, with some non-const values |
| ! ERROR: not yet implemented: Analyze overload for AssumedShapeBoundsSpec |
| integer :: z([1,2,dim_a(1) + x(dim_a(1))]:) |
| !rank-1 zero sized array is valid and should declare a scalar |
| ! ERROR: not yet implemented: Analyze overload for AssumedShapeBoundsSpec |
| integer :: scalar1([integer::]:) |
| integer :: empty_arr(0) = [integer::] |
| ! ERROR: not yet implemented: Analyze overload for AssumedShapeBoundsSpec |
| integer :: scalar2(empty_arr:) |
| end subroutine |
| |
| subroutine bad(x, y, z, dim1_assumed, dim2_assumed) |
| integer :: dim3(3, 3, 3) |
| integer :: dim1_assumed(:) |
| integer :: dim2_assumed(:,:) |
| ! invalid cases: |
| ! future_ERROR: Rank-1 integer array used as lower bounds in DECLARATION must have constant size |
| ! ERROR: not yet implemented: Analyze overload for AssumedShapeBoundsSpec |
| integer :: x(dim1_assumed:) |
| ! future_ERROR: Integer array used as lower bounds in DECLARATION must be rank-1 but is rank-3 |
| ! ERROR: not yet implemented: Analyze overload for AssumedShapeBoundsSpec |
| integer :: y(dim3:) |
| ! Combining both errors in one declaration, plus integer-check from type wrapper |
| ! future_ERROR: Integer array used as lower bounds in DECLARATION must be rank-1 but is rank-2 |
| ! future_ERROR: Rank-1 integer array used as lower bounds in DECLARATION must have constant size |
| ! ERROR: not yet implemented: Analyze overload for AssumedShapeBoundsSpec |
| ! ERROR: Must have INTEGER type, but is REAL(4) |
| integer :: z(dim2_assumed + 3.7:) |
| end subroutine |
| end program |