Pull request https://github.com/llvm/llvm-project/pull/97337 was reverted by https://github.com/llvm/llvm-project/pull/98612 due to two failing tests in llvm-test-suite -- which I ran, as always, but must have bungled or misinterpreted (mea culpa). The failing tests were llvm-test-suite/Fortran/gfortran/regression/ char_length_{20,21}.f90. They have array constructors with explicit character types whose dynamic length values are negative at runtime, which must be interpreted as zero. This patch extends the original to cover those cases.
15 lines
629 B
Fortran
15 lines
629 B
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1
|
|
! Confirm enforcement of F'2023 7.8 p5
|
|
subroutine subr(s,n)
|
|
character*(*) s
|
|
!ERROR: Array constructor implied DO loop has no iterations and indeterminate character length
|
|
print *, [(s(1:n),j=1,0)]
|
|
!ERROR: Array constructor implied DO loop has no iterations and indeterminate character length
|
|
print *, [(s(1:n),j=0,1,-1)]
|
|
!ERROR: Array constructor implied DO loop has no iterations and indeterminate character length
|
|
print *, [(s(1:j),j=1,0)]
|
|
print *, [(s(1:1),j=1,0)] ! ok
|
|
print *, [character(2)::(s(1:n),j=1,0)] ! ok
|
|
print *, [character(n)::(s(1:n),j=1,0)]
|
|
end
|